알고리즘 공부/미분류

그리디 알고리즘 with 이코테 파이썬 #시간복잡도 줄이는 테크닉

_우지 2021. 7. 7. 09:15

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
fun main(){
    var (N,K) = readLine()!!.split(" ").map{it.toInt()}
    var count = 0
    while(true) {
        if (N % K == 0) {
            N /= K
            count ++z
        } else {
            N -= 1
            count ++
        }
 
        if(N==1)
            break
    }
    println(count)
}
cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
fun main() {
    var (N, K) = readLine()!!.split(" ").map { it.toInt() }
    var count = 0
    var target = 0
    while (true) {
        target = (N/K)*K
        count += (N-target)
        N = target
 
        if(N==0)
            break
        else{
            N /= K
            count++
        }
    }
 
 
    println(count-1)
}
cs

 

처음코드를 시간복잡도를 고려하여 개선함.