기출 : 2018 E 기업 알고리즘 대회
[정당성 분석]
→ 가능하면 최대한 많이 나누는 작업(2번 방법)이 최적 !
# 답안 예시 : 시간복잡도가 훨씬 적은 코드 (테크닉)
# while문 한번 실행 시 n을 k로 나누는 연산이 실행되므로 log시간
n, k = map(int, input().split())
result = 0
while True:
# N이 K로 나누어 떨어지는 수가 될 때까지 빼기
target = (n // k) * k
result += (n - target)
n = target
# N이 K보다 작을 때 반복문 탈출
if n < k:
break
result += 1
n //= k
result += (n - 1)
print(result)
# 내가 짠 코드
# 간단하지만 항상 n이 k로 나누어 떨어지는지 체크해야 함.
n, k = map(int, input().split())
count = 0
while n != 1: # 1이 될 때까지
if n%k == 0: # 2번 방법
n = n // k
count += 1
else: # 1번 방법
n -= 1
count += 1
print(count)
