본문 바로가기

IT/알고리즘

[백준] 1로만들기

728x90
SMALL

 

https://www.acmicpc.net/problem/1463

 

fun main() = with(Scanner(System.`in`)) {
    val size = nextInt()
    val count = Array<Int>(size + 1) { 0 }

    count[0] = 0
    count[1] = 1
    if (size == 1) {
        return println(0)
    }
    count[2] = 1
    if (size == 2) {
        return println(count[size])
    }
    count[3] = 1
    if (size == 3) {
        return println(count[size])
    }

    for (i in 4 until count.size) {
        count[i] = count[i - 1] + 1

        if (i % 6 == 0) {
            count[i] = min(count[i],count[i / 3] + 1)
            count[i] = min(count[i],count[i / 2] + 1)
        } else if (i % 3 == 0) {
            count[i] = min(count[i],count[i / 3] + 1)
        } else if (i % 2 == 0) {
            count[i] = min(count[i],count[i / 2] + 1)
        } else {
            count[i] = min(count[i],count[i - 1] + 1)
        }
    }
    println(count[size])
}
728x90
LIST

'IT > 알고리즘' 카테고리의 다른 글

[백준] 카드구매하기  (0) 2024.11.21
[백준] 1,2,3 더하기  (0) 2024.11.21
[백준] 2xn 타일링  (0) 2024.11.18
[백준] 2xn 타일링2  (0) 2024.11.18
[백준] 차이를 최대로  (0) 2024.11.14