💻 입력 조건

  • 첫째 줄에 N(2<=N<=100,000)과 K(2<=K<=100,000)가 공백으로 구분되며 각각 자연수로 주어진다. 이때 입력으로 주어지는 N은 항상 K보다 크거나 같다.

💻 출력 조건

  • 첫째 줄에 N이 1이 될 때까지 1번 혹은 2번의 과정을 수행해야 하는 횟수의 최솟값을 출력한다.

💻 입력 예시 1

25 5

💻 출력 예시 2

2

📖 문제 해결

K로 나누는 연산이 1을 빼는 연산보다 빠르게 N이 1이 될 수 있도록 해주기에, 나눗셈을 최대한 활용하는 해결 방안을 생각해 보고자 하였습니다. 따라서 1이 될 때까지(while 문 활용) 주어진 K로 나눠지지 않으면 K로 나눠질 때까지 1로 빼는 연산을 반복하고, K로 나눠지면 K로 바로 나눠주는 연산(if 문 활용)을 반복함으로써 최소 연산 횟수를 구하였습니다.

input_ = list(map(int, input().split()))
N, K = input_[0], input_[1]

count = 0
while N != 1 :
    
    if N % K == 0:
        count += 1
        N = N // K
    else:
        count += 1
        N = N - 1

print(count)
profile
AI를 공부하고 있는 학생입니다:)

0개의 댓글