쏘ing

[Python] 백준 1463 1로 만들기 본문

알고리즘/CLASS 3

[Python] 백준 1463 1로 만들기

한민민 2022. 2. 21. 16:09

https://www.acmicpc.net/problem/1463

풀이

import sys

num = int(sys.stdin.readline().rstrip())

num_list = [0, 0, 1, 1]

for i in range(4, num + 1):
    num_list.append(num_list[i-1] + 1)
    
    if i % 2 == 0:
    	# 2로 나누어 떨어졌을 때의 경우 + 1을 해줘야 한다 ex) f(2) = 1일 때, f(4) 는 f(2)보다 
        # 한 번 더 연산(나누기)했기 때문에 1을 더해줘야 한다
        num_list[i] = min(num_list[i // 2] + 1, num_list[i])
    if i % 3 == 0:
        num_list[i] = min(num_list[i // 3] + 1, num_list[i])
    
print(num_list[num])

 

'알고리즘 > CLASS 3' 카테고리의 다른 글

[Python] 백준 9461 파도반 수열  (0) 2022.02.21
[Python] 백준 1003 피보나치 함수  (0) 2022.02.21
[Python] 백준 9095 1, 2, 3 더하기  (0) 2022.02.21
[Python] 백준 11047 동전 0  (0) 2022.02.21
[Python] 백준 11399 ATM  (0) 2022.02.21
Comments