Algorithm
[문제] 1이 될 때까지
daehwi
2023. 4. 19. 18:15
반응형
# 2023.04.16
# 어떠한 수 N이 1이 될 때까지 두 과정중 하나를 반복적으로 선택하여 수행하려고 한다.
# 단 두 번째 연산은 N이 K로 나누어떨어질 때만 선택할 수 있다.
# 1. N에서 1을 뺀다. / 2. N을 K로 나눈다.
# N과 K가 주어질 때, N이 1이 될 때까지 1번 혹은 2번의 과정을 수행해야하는 최소 횟수를 출력하시오.
# 기본 답안
n, k = map(int,input().split())
count=0
while n!=1:
if (n%k==0):
n //=k
else:
n-=1
count+=1
print(count)
# 개선 답안
n, k = map(int,input().split())
count = 0
while n>=k: # n>=k일 때
count+=n%k+1 # 나누고 남은 나머지(1씩 뻈다고 가정) + 1(나눗셈) 을 더함
n//=k # n 을 k로 나눈 몫으로 최신화
if (n!=1): # n이 k보다 작아지면, 1이 될 때까지 빼는 횟수를 더해준다.
count += n-1
print(count)
반응형