We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
1 parent 3fa41dc commit 80e7790Copy full SHA for 80e7790
1 file changed
Hongjoo/백준/계단수.py
@@ -0,0 +1,31 @@
1
+"""
2
+https://www.acmicpc.net/problem/1562
3
4
+N = int(input())
5
+MOD = 1e9
6
+# dp[N번째 수][마지막 수][방문한 수 bitmasking(0~1023)]
7
+dp = [[[0]*1024 for _ in range(10)] for _ in range(N+1)]
8
+
9
+for i in range(1, 10):
10
+ dp[1][i][1<<i] = 1
11
12
+# n = N번째 수
13
+for n in range(2, N+1):
14
+ # i = 마지막 방문 숫자가 i
15
+ for i in range(10):
16
+ # 0~9까지 모든 수를 방문해야 한다는 조건이 있으므로, 방문 여부를 bitmasking을 통해 저장해야 함.
17
+ for bit in range(1024):
18
+ if i == 0:
19
+ dp[n][i][bit | (1<<i)] += dp[n-1][i+1][bit]
20
+ elif i == 9:
21
+ dp[n][i][bit | (1<<i)] += dp[n-1][i-1][bit]
22
+ else:
23
+ dp[n][i][bit | (1<<i)] += dp[n-1][i-1][bit] + dp[n-1][i+1][bit]
24
25
+ dp[n][i][bit | (1<<i)] %= MOD
26
27
+res = 0
28
+for i in range(10):
29
+ res += dp[N][i][2**10-1]
30
31
+print(int(res%MOD))
0 commit comments