반응형
문제
https://www.acmicpc.net/problem/1463
코드
n = int(input())
d = [0] * (n+1)
for i in range(2, n+1):
d[i] = d[i-1] + 1
if i % 3 == 0:
d[i] = min(d[i], d[i//3]+1)
if i % 2 == 0:
d[i] = min(d[i], d[i//2]+1)
print(d[n])
설명
우선 n+1 개 만큼의 0으로 이루어진 리스트를 만들어준다.
이후 i번째의 값을 i-1번째에 1을 더해준 값으로 우선 지정해준다.
만약 i가 2혹은 3으로 나누어지는 수라면 이 수와 2혹은 3으로 나누고 1을 더한 수를 비교해서 작은 수를 값으로 지정한다.
이후 값을 출력한다.
반응형
'개발 연습장 > 백준 문제풀이' 카테고리의 다른 글
[파이썬, Python]] 백준 5086: 배수와 약수 (0) | 2023.02.20 |
---|---|
[파이썬, Python] 백준 11659: 구간 합 구하기 4 (0) | 2023.02.17 |
[파이썬, Python] 백준 2579: 계단 오르기 (0) | 2023.02.15 |
[파이썬, Python] 백준 9461: 파도반 수열 (0) | 2023.02.14 |
[파이썬, Python] 백준 24416: 피보나치 수 1 (0) | 2023.02.13 |