-
1463. 1로 만들기코테 준비/DP 2023. 1. 3. 21:39
import sys n=int(sys.stdin.readline()) count=0 result=[0]*(n+1) for i in range(2,n+1): result[i]=result[i-1]+1 # 일단 1을 먼저 빼기 if i%2==0: result[i]=min(result[i],result[i//2]+1) if i%3==0: result[i]=min(result[i],result[i//3]+1) print(result[-1])
n=10일때 result를 출력해보면 [0, 0, 1, 1, 2, 3, 2, 3, 3, 2, 3]이다
1. result=[0,0,0,0,0,0,0,0,0,0] # result[0]*(n+1)
2. result=[0,0,1,0,0,0,0,0,0,0] # result[2]=result[1]+1
3. result=[0,0,1,0,0,0,0,0,0,0] # result[2]=min(result[2],result[1]+1)=min(1,2)=1
4. result=[0,0,1,2,0,0,0,0,0,0] # result[3]=result[2]+1
5. result=[0,0,1,1,0,0,0,0,0,0] # result[3]=min(result[3],result[1]+1)=min(2,1)=1
.
.
.
6. result=[0, 0, 1, 1, 2, 3, 2, 3, 3, 2, 3]
'코테 준비 > DP' 카테고리의 다른 글
9461. 파도반 수열 (0) 2023.01.06 11727. 2xn 타일링 2 (dp는 규칙을 찾자!) (2) 2023.01.05 9095. 1,2,3 더하기 (규칙찾기) (0) 2023.01.04 2579. 계단 오르기 (다시 보기) (0) 2023.01.04 1003. 피보나치 (재귀함수와 dp 차이) (0) 2022.12.29