[백준] 맥주 냉장고 (3595)(kotlin)
문제 설명
입력 및 출력
» 입력
첫째 줄에 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)
}