[BOJ] 1463 1로 만들기 (python)

백준 1463. 1로 만들기 (파이썬)

 

 

1463번: 1로 만들기

첫째 줄에 1보다 크거나 같고, 106보다 작거나 같은 정수 N이 주어진다.

www.acmicpc.net

import sys

X = int(sys.stdin.readline())
L = [0] * (X + 1)

for i in range(2, X + 1):
    if i % 2 == 0 and i % 3 == 0:
        L[i] = min(L[i - 1] + 1, L[i // 2] + 1, L[i // 3] + 1)
    elif i % 2 == 0:
        L[i] = min(L[i - 1] + 1, L[i // 2] + 1)
    elif i % 3 == 0:
        L[i] = min(L[i - 1] + 1, L[i // 3] + 1)
    else:
        L[i] = L[i - 1] + 1

print(L[X])

 

1부터 시작해서 정해진 수까지 최단 거리로 올라간다는 느낌

2로 나누는 경우와 3으로 나누는 경우 중에서도 최소값을 찾는 게 중요했다

'Algorithm > BOJ' 카테고리의 다른 글

[BOJ] 10989 수 정렬하기 3 (python)  (0) 2022.10.03
[BOJ] 11652 카드 (python)  (0) 2022.10.01
[BOJ] 10026 적록색약 (python)  (0) 2022.08.24
[BOJ] 3986 좋은 단어 (python)  (0) 2022.08.07
[BOJ] 9012 괄호 (python)  (0) 2022.07.23