실전문제: 1이 될 때까지
내가 쓴 답안
n, k = map(int, input().split())
result=0
if n%k==0:
while n!=1:
n=n//k
result+=1
elif n%k!=0:
while n%k!=0:
n=n-1
result+=1
while n!=1:
n=n/k
result+=1
print(result)
생각 과정
#1)만약 나누어지는 경우라면 N을 K로 나눈다. 1이 될 때 까지
#2)안 나눠지는 경우라면 N에서 1을 뺀다.
#ex 18에 4면 17 4 16 4
중간에 잘못 생각한 부분: WHILE N/K!=1이 아님
핵심: k가 2 이상이기만 하면 k로 나누는 것이 1을 빼는 것보다 항상 빠르게 n의 값을 줄일 수 있음
그러므로 k로 최대한 많이 나눌 수 있도록 최적의 해 보장하기
728x90
LIST
'프로그래밍 > Python' 카테고리의 다른 글
파이썬 줄바꿈 없애서 출력하기 (0) | 2023.05.01 |
---|---|
파이썬 print문 통해서 숫자 변수 출력법 (0) | 2023.04.25 |
7월 19일 코딩테스트 (0) | 2022.07.20 |
04. 피보나치 순열 (반복적 방식, 재귀적 방식) (0) | 2022.07.18 |
3강: 정렬(Sort), 탐색(Search)-이진탐색 (0) | 2022.07.18 |