< 이 글은 책 '이것이 취업을 위한 코딩 테스트다' 에서 발췌한 내용을 인용했습니다. >
1로 만들기
<무지성 코드>
n = int(input())
d = [-1] * 30000
d[1] = 0
i = 2
while i <= n:
m = 9999999
if i % 5 == 0 and m > d[i//5] + 1:
m = d[i//5] + 1
if i % 3 == 0 and m > d[i//3] + 1:
m = d[i//3] + 1
if i % 2 == 0 and m > d[i//2] + 1:
m = d[i//2] + 1
if m > d[i-1] + 1:
m = d[i-1] + 1
d[i] = m
i += 1
print(d[n])
<답안 예시>
x = int(input())
d = [0] * 30000
for i in range(2, x+1):
d[i] = d[i-1] + 1
if i % 2 == 0:
d[i] = min(d[i], d[i//2]+1)
if i % 3 == 0:
d[i] = min(d[i], d[i//3]+1)
if i % 5 == 0:
d[i] = min(d[i], d[i//5]+1)
print(d[x])
답안 예시를 보니 while문 보다 for문을 사용하는게 훨씬 깔끔해보인다. 그리고 굳이 하지 않아도 될 변수들을 만들었다. 코드를 다 짠 이후에도 깔끔하게 바꿀 수 있는지 마지막으로 한번 더 생각하는 습관을 들여야 겠다.
'이것이 취업을 위한 코딩테스트다 with 파이썬' 카테고리의 다른 글
Chapter 8-4 바닥 공사 (0) | 2023.03.03 |
---|---|
Chapter 8-3 개미 전사 (0) | 2023.03.02 |
Chapter 8-1 다이나믹 프로그래밍 (0) | 2023.02.03 |
Chapter 7-3 떡볶이 떡 만들기 (0) | 2023.02.02 |
Chapter 7-2 부품 찾기 (0) | 2023.02.01 |