반응형
문제
https://www.acmicpc.net/problem/12852
이전에 풀었던 문제이다.
이제는 연산횟수 뿐만 아니라 순서도 출력해야된다.
순서를 담을 배열을 추가하여 구현하면 된다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | X=int(input()) DP=[[0,[]] for _ in range(X+1)]#연산 횟수와 연산 과정 #초기화 DP[1][0]=0 DP[1][1]=[1] for i in range(2,X+1): #1을뺄때 DP[i][0]=DP[i-1][0]+1 DP[i][1]=DP[i-1][1]+[i] #2로 나누어 떨어질때 if i%2==0 and DP[i][0]>DP[i//2][0]+1: DP[i][0] = DP[i//2][0] + 1 DP[i][1] = DP[i//2][1] + [i] #3으로 나누어 떨어질때 if i%3==0 and DP[i][0]>DP[i//3][0]+1: DP[i][0] = DP[i//3][0] + 1 DP[i][1] = DP[i//3][1] + [i] print(DP[X][0])#연산 최솟값 출력 DP[X][1].reverse()#뒤집기 for i in DP[X][1]: print(i,end=" ") | cs |
반응형
'알고리즘(python) > 기본' 카테고리의 다른 글
[Python]동적계획법과 최단거리 역추적 백준 9252 (0) | 2020.03.13 |
---|---|
[Python]동적계획법과 최단거리 역추적 백준 14002,14003 (0) | 2020.03.10 |
[Python]동적계획법3 백준 2098 (0) | 2020.02.29 |
[Python]동적계획법3 백준 11723 (1) | 2020.02.27 |
[Python]동적계획법2 백준 2618 (0) | 2020.02.10 |
최근댓글