본문 바로가기
나동빈 with 파이썬/실전문제 풀이

[Ch.3 - 그리디] 1이 될 때까지

by yewonnie 2022. 1. 28.

My code

n,k = map(int,input().split())

count = 0
while n!=1:
    if n%k==0:
        n = n/k
        count += 1
    else:
        n -= 1
        count += 1

print(count)

Answer 1

n,k = map(int,input().split())
result = 0

while n >= k:
    while n % k != 0:
        n -= 1
        result += 1
    n //= k
    result += 1

while n > 1:
    n -= 1
    result += 1

print(result)

Answer 2

n,k = map(int,input().split())
result = 0

while True:
    target = (n // k) * k
    result += (n - target)
    n = target
    if n < k:
        break
    result += 1
    n //= k

result += (n - 1)
print(result)

Code Review

-My code
1이 될 때까지는 만약 n 이 k 로 나누어 떨어지면 n 을 k 로 나눠주면 되고 그렇지 않으면 k 로 나누어 떨어질 때까지 1을 빼주면 됩니다. 따라서 if else 문을 이용하여 만약 n 이 k 로 나누어 떨어지면 n 을 k 로 나누어주도록 하였고, 그렇지 않다면 1을 빼주도록 해주었습니다. 그리고 연산을 실행할 때마다 count 를 증가시켜주어 연산 횟수를 세어주었습니다. 만약 n 이 1이 된다면 반복문을 빠져나와 count 를 출력하도록 해주었습니다.

 

댓글