728x90
반응형

# 그리디 알고리즘
# 1이 될 때까지

# 어떠한 수 N이 될 때까지 다음의 두 과정 중 하나를 반복적으로 선택하여 수행하려고 한다.
# 단, 두 번째 연산은 N이 K로 나누어떨어질 때만 선택할 수 있다.

# 1. N에서 1을 뺀다.
# 2. N을 K로 나눈다.
# N이 17, K가 4라고 가정, 1번 과정 거치면 N을 16, 이후 2번의 과정 거치면 N은 1

 

 

 

# n, k입력받기

n, k = map(int, input().split())
result = 0 # 몇번인지 체크

while n >= k: # n이 k보다 크거나 작을때까지 = n이 k로 나누어지기 전까지
    while n % k != 0: # n이 k로 나누어지기 전까지
        n -= 1
        result += 1
    
    n /= k
    result += 1
    
if n > 1:
    n -=1
    result += 1
    
print(result)

 

 

책 참고

# 책 참고

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

while True:
    target = (n//k) * k # n//k = 몫 * k , 25//3 = 8 * 3, 8 //3 = 2*3, 2//3 = 0 *k
    result += (n-target) 
    n = target # 25 = 24로 변경, 6, 2
    
    if n < k: # 2는 3보다 작으니 break
        break
    
    # k로 나누기
    result += 1
    n //= k # 24 //3 = 8, 6 //3 = 2
    


result += (n-1)
print(result)
        
728x90
반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기