[백준] 맥주 냉장고 (3595)(kotlin)

문제 설명

백준 3595번 문제 링크

입력 및 출력

» 입력

첫째 줄에 n이 주어진다. (1 ≤ n ≤ 106)

» 출력

첫째 줄에 a b c를 출력한다. 만약 총 면적이 가장 작은 냉장고가 여러 가지인 경우, 아무거나 출력한다.

예제 입출력(테스트케이스)

입력 출력
12 3 2 2

문제 풀이1

fun main(args: Array<String>) = with(System.`in`.bufferedReader()) {
    val n = readLine().toInt()
    var minIdx = ""
    var min = Int.MAX_VALUE

    for (i in 1..n) {
        for (j in 1..n) {
            if (i * j > n) break

            for (k in 1..n) {
                if (i * j * k > n) break
                else if (i * j * k < n) continue
                else {
                    val size = i * j * 2 + i * k * 2 + j * k * 2
                    if (size < min) {
                        min = size
                        minIdx = "$k $j $i"
                    }
                    break
                }
            }
        }
    }

    println(minIdx)
}

문제 풀이2

fun main(args: Array<String>) = with(System.`in`.bufferedReader()) {
    val n = readLine().toInt()
    var minIdx = ""
    var min = Int.MAX_VALUE

    for (i in 1..n) {
        if (i * i * i > n) break

        if (n % i == 0) {
            val sub = n / i

            for (j in i..sub) {
                if (j * j > sub) break

                if (sub % j == 0) {
                    val k = sub / j
                    val area = i * j + i * k + j * k

                    if (area < min) {
                        minIdx = "$k $j $i"
                    }
                }
            }
        }
    }

    println(minIdx)
}