Skip to content

Commit f1b805d

Browse files
committed
issue #44 10844
1 parent 4ce6917 commit f1b805d

File tree

1 file changed

+55
-0
lines changed

1 file changed

+55
-0
lines changed

โ€Žsrc/backjoon/_10844.java

+55
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
package backjoon;
2+
// https://www.acmicpc.net/problem/10844
3+
import java.io.BufferedReader;
4+
import java.io.IOException;
5+
import java.io.InputStreamReader;
6+
7+
public class _10844 {
8+
9+
static Long[][] dp;
10+
static int N;
11+
final static long MOD = 1000000000;
12+
13+
public static void main(String[] args) throws IOException {
14+
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
15+
N = Integer.parseInt(br.readLine());
16+
dp = new Long[N + 1][10];
17+
18+
// ์ฒซ๋ฒˆ์งธ ์ž๋ฆฟ์ˆ˜๋Š” 1๋กœ ์ดˆ๊ธฐํ™”
19+
for(int i = 0; i < 10; i++) {
20+
dp[1][i] = 1L;
21+
}
22+
23+
long result = 0;
24+
25+
// ๋งˆ์ง€๋ง‰ ์ž๋ฆฟ์ˆ˜์ธ 1~9๊นŒ์ง€์˜ ๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ ๋ชจ๋‘ ๋”ํ•ด์ค€๋‹ค.
26+
for(int i = 1; i <= 9; i++) {
27+
result += recur(N, i);
28+
}
29+
System.out.println(result % MOD);
30+
}
31+
32+
static long recur(int digit, int val) {
33+
34+
if(digit == 1) {
35+
return dp[digit][val];
36+
}
37+
38+
// ํ•ด๋‹น ์ž๋ฆฌ์ˆ˜์˜ val๊ฐ’์— ๋Œ€ํ•ด ํƒ์ƒ‰ํ•˜์ง€ ์•Š์•˜์„ ๊ฒฝ์šฐ
39+
if(dp[digit][val] == null) {
40+
// val์ด 0์ผ๊ฒฝ์šฐ ๋‹ค์Œ์€ 1๋ฐ–์— ๋ชป์˜ด
41+
if(val == 0) {
42+
dp[digit][val] = recur(digit - 1 ,1);
43+
}
44+
// val์ด 1์ผ๊ฒฝ์šฐ ๋‹ค์Œ์€ 8๋ฐ–์— ๋ชป์˜ด
45+
else if(val== 9) {
46+
dp[digit][val] = recur(digit - 1, 8);
47+
}
48+
// ๊ทธ ์™ธ์˜ ๊ฒฝ์šฐ๋Š” val-1๊ณผ val+1 ๊ฐ’์˜ ๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ ํ•ฉํ•œ ๊ฒฝ์šฐ์˜ ์ˆ˜๊ฐ€ ๋จ
49+
else {
50+
dp[digit][val] = recur(digit - 1, val - 1) + recur(digit - 1, val + 1);
51+
}
52+
}
53+
return dp[digit][val] % MOD;
54+
}
55+
}

0 commit comments

Comments
 (0)