File tree Expand file tree Collapse file tree 1 file changed +39
-0
lines changed
Expand file tree Collapse file tree 1 file changed +39
-0
lines changed Original file line number Diff line number Diff line change 1+ # 백준 12852번: 1로 만들기 2
2+
3+ import sys
4+
5+ input = sys .stdin .readline
6+
7+ # N <= 10^6
8+ N = int (input ())
9+
10+ # dp[i]: i를 1로 만들기 위한 최소 횟수
11+ dp = [i - 1 for i in range (N + 1 )]
12+ # parents[i] = i를 1로 만들기 위해 직전에 거친 수
13+ parents = [i - 1 for i in range (N + 1 )]
14+
15+ for i in range (1 , N + 1 ):
16+ # print(i)
17+ if dp [i ] > dp [i - 1 ] + 1 :
18+ dp [i ] = dp [i - 1 ] + 1
19+ parents [i ] = i - 1
20+ if i * 3 <= N and dp [i * 3 ] > dp [i ] + 1 :
21+ dp [i * 3 ] = dp [i ] + 1
22+ parents [i * 3 ] = i
23+ if i * 2 <= N and dp [i * 2 ] > dp [i ] + 1 :
24+ dp [i * 2 ] = dp [i ] + 1
25+ parents [i * 2 ] = i
26+ # print(*range(1, N + 1))
27+ # print('----------')
28+ # print(*dp[1:])
29+ # print(*parents[1:])
30+ # print()
31+
32+ print (dp [N ])
33+
34+ answer = [N ]
35+ current = N
36+ while current > 1 :
37+ current = parents [current ]
38+ answer .append (current )
39+ print (* answer )
You can’t perform that action at this time.
0 commit comments