반응형
문제
https://www.acmicpc.net/problem/1463
n번째에서 이전단계는 3개로 나뉜다.
n-1번째의 최솟값 , 2로 나누어 진다면 n//2의 최솟값 , 3으로 나누어 진다면 n//3 의 최솟값
이 셋중 작은것을 골라 1을 더해주게 되면 n번째의 최솟값을 구할수 있다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | n=int(input()) result=[0 for _ in range(n+1)] def make_one(n): if n==1: return result[2]=1 if n==2: return result[3]=1 if n==3: return for i in range(4,n+1): result[i] = result[i - 1] + 1 if i%3==0: result[i]=min(result[i//3]+1,result[i]) if i%2==0: result[i]=min(result[i//2]+1,result[i]) make_one(n) print(result[n]) | cs |
반응형
'알고리즘(python) > 기본' 카테고리의 다른 글
[Python]동적계획법 백준 2156 (0) | 2020.01.10 |
---|---|
[Python]동적계획법 백준 10844 (0) | 2020.01.10 |
[Python]동적계획법 백준 2579 (0) | 2020.01.09 |
[Python]동적계획법 백준 1932 (0) | 2020.01.08 |
[Python]동적계획법 백준 1149 (0) | 2020.01.08 |
최근댓글