본문 바로가기
Algorithms

백준 1463. 1로 만들기

by Brian Go 2022. 6. 30.

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

 

1463번: 1로 만들기

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

www.acmicpc.net

동적 프로그래밍은 뭔가 감 잡은 것 같다 하면 또 신기한 문제가 튀어나오네..

기본적으로 작은 값부터 쌓아올리는 시도는 했는데 카운트 자체를 셀 생각이 쉽게 나지 않았다.

 

n = int(input())

d = [0] * (n + 1)
for i in range(2, n+1):
	d[i] = d[i-1] + 1 #1을 뺀 경우는 d[i-1]연산 + 1번 연산
	if i%3 == 0:
		d[i] = min(d[i], d[i//3] + 1) #더 작은 게 필요하기 때문에 1을 빼는 연산과 나머지 연산 비교
	if i%2 == 0:
		d[i] = min(d[i], d[i//2] + 1)
print(d[n])

'Algorithms' 카테고리의 다른 글

백준 2156. 포도주 시식  (0) 2022.07.04
백준 10844. 쉬운 계단 수  (0) 2022.07.01
백준 2579. 계단 오르기  (0) 2022.06.29
백준 1932. 정수 삼각형  (0) 2022.06.28
백준 1149. RGB 거리  (0) 2022.06.27

댓글