Skip to content

Commit 06cd8be

Browse files
committed
[BOJ] 12852 1로 만들기 2 (G5)
1 parent 7540acb commit 06cd8be

File tree

1 file changed

+39
-0
lines changed

1 file changed

+39
-0
lines changed

최어진/11주차/260310.py

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
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)

0 commit comments

Comments
 (0)