๋ฌธ์
ํด๋น ํฌ์คํ ์ ๋ฐฑ์ค์ 10844๋ฒ ์ฌ์ด ๊ณ๋จ ์ ์ ์ ๊ทผ๊ณผ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ์ค๋ช ํ ๊ธ ์ ๋๋ค.
์ ๋ต ์์ค ์ฝ๋๋ฅผ ํ์ธํ์๋ ค๋ฉด solve url ์์ ํ์ธ ๊ฐ๋ฅํฉ๋๋ค.
์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ์ด๋ค ๋ฐฉ์์ผ๋ก ์ ๊ทผํด์ผ ํ๋์ง๋ฅผ ๋จผ์ ์๊ฐํด๋ณด์.
ํด๊ฒฐ๋ฒ
์ฐ์ ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด์๋ ์๋ฆฌ์์ ๋ํ ๊ฐ๋ ์ ๋จผ์ ์์์ผ ํ๋ค.
45765 ์ด๋ผ๋ ์๊ฐ ์๋ค๋ฉด ํด๋น ์๋ ๊ฐ์ฅ ์ผ์ชฝ์ ์๊ฐ ์ ์ผ ๋์ ์๋ฆฌ ์๊ฐ ๋๋ค.
์ฆ
4 5 7 6 5
5์๋ฆฌ 4์๋ฆฌ 3์๋ฆฌ 2์๋ฆฌ 1์๋ฆฌ
๊ทธ๋ผ ์ฐ๋ฆฌ๋ ์ด ๋ฌธ์ ๋ฅผ n๋ฒ์จฐ ์๋ฆฌ์ n-1 ๋ฒ์งธ ์๋ฆฌ๋ก ์ ํ์์ ๋ง๋ค ์ ์๋ค.
ํ์ฌ n๋ฒ์งธ ์๋ฆฌ์์ ์ฐ์ผ ์ ์๋ n-1 ๋ฒ์จฐ ์๋ฆฌ์ ์ซ์๋ค์ ์ฐ์ ํ์๋ฅผ ๋ํ๋ฉด ์ต์ข ์ ํ์์ด ๋์ค๊ฒ ๋๋ค.
a[n] = [n-1]
์ ๊ทผ๋ฒ
์์ ์ ํ์์ ๊ตฌ์ฑํ๊ธฐ ์ํด ์ด๋ค ์๊ฐ n๋ฒ์งธ ์๋ฆฌ์์ ๋์ฌ ์ ์๋์ง ์์๋ณด์.
n๋ฒ์จฐ ์๋ฆฌ์ ์๊ฐ ์๋ฅผ ๋ค์ด 3์ด๋ผ๊ณ ํ๋ฉด n-1๋ฒ์งธ ์๋ฆฌ์์ ์ฌ์ฉ๋ ์ ์๋ ํ์๋ ์ด 2ํ์ด๋ค.
23, 32.
๊ทธ๋ผ ๋ชจ๋ n๋ฒ์จฐ ์๋ฆฌ์ ์ (0~9๊น์ง)๋ ์์ ๊ฐ์ด 2๋ฒ ์ฐ์ผ๊น?
๋ค์ ๊ฒฝ์ฐ๋ฅผ ๋ด๋ณด์.
- 0์ผ๋ก ์์ํ๋ ์๋ ์์ผ๋ 0์ผ๋ก ๋๋๋ ๊ณ๋จ ์๋ ์กด์ฌํจ. ์ฆ 10 ์์๋ง ์ฐ์ผ ์ ์์
- 9๋ n-1๋ฒ์งธ ์์ 8์์๋ง ์ฐ์ผ ์ ์์.
๊ฑฐ๊ธฐ์ ์ฐ๋ฆฌ๊ฐ ์ฐพ์ ์กฐ๊ฑด n๋ฒ์งธ ์๋ฆฌ ์ m์ n-1๋ฒ์งธ์์ 2๋ฒ์ฉ ์ฌ์ฉ๋จ์ ์ถ๊ฐํ๋ฉด ๋ค์๊ณผ ๊ฐ์ ์ ํ์์ด ๋์ถ๋๋ค.
// n: n๋ฒ์จฐ ์๋ฆฌ์
// m: n์๋ฆฌ ์์ ํด๋นํ๋ ์ 0 ~ 9
// m์ด 0์ธ ๊ฒฝ์ฐ
a[n][m] = a[n-1][1];
// m์ด 1 ~ 8 ์ฌ์ด์ธ ๊ฒฝ์ฐ
a[n][m] = a[n-1][m+1] + a[n-1][m-1];
// m์ด 9์ธ ๊ฒฝ์ฐ
a[n][m] = a[n-1][9];
์ค๋ต ํ๋ณด
๊ทธ๋ฆฌ๊ณ ์ฃผ์ํด์ผํ ๊ฒ์ด ์ด๋ฒ์๋ ์ญ์ mod ์ฐ์ฐ์ด ์๋๊น ์ถ๋ค.
์ด๋ฒ์๋ ๊ธฐ์กด ๋ชจ๋๋ฌ์ ์กฐ๊ธ ๋ค๋ฅผ ์ ์๋ค.
10์ต์ผ๋ก ๋๋ ๋๋จธ์ง๋ฅผ ์ถ๋ ฅํ๋ผ๋ผ๋ ์ด์ ๊ฐ ์ฐ๋ฆฌ๊ฐ ์ด๋ค ์๋ฅผ ๋์ด๊ฐ๋ฉด ๊ฒฐ๊ณผ๋ก 10์ต์ด ๋๊ฒ ๋์์ ์ ์ ์ค๋ฒํ๋ก๊ฐ ๋ฐ์ํ๊ธฐ ๋๋ฌธ์ด๋ค.
๊ทธ๋ผ ํ๋์ ์์ ๊ฐ์ (arr[n][m])
์ต๋ 10์ต์ด ๋ ์ ์๊ณ (arr[n])
์ ํฌ๊ธฐ๋ ์ต๋ 100์ต - arr[n][0]
์ด ๋ ์ ์๋ค.
๊ทธ๋์ ๊ฐ์ ์ ์ฅํ ๋์๋ ๋ชจ๋๋ฌ๋ฅผ ์ํํด์ผ ํ๋ค.
์ฌ๊ธฐ์ ๋์ผ๊น?
๊ฐ์ ์ ์ฅํ ๋๋ ๋ชจ๋๋ฌ๋ก ๋ฃ์ด์คฌ์ผ๋ฉด ์ต์
์ ๊ฒฝ์ฐ ์ถ๋ ฅํ ๋๋ 100์ต ์ธ์ ๋ฆฌ๊ฐ ๋ ์ ์์ผ๋ฏ๋ก ์ถ๋ ฅ์ ํ ๋๋ ๋ชจ๋๋ฌ๋ฅผ ์ํํด์ฃผ์.
์ด๊ฒ ๋๋ฌธ์ ๋ง์ด ํ๋ ธ๋ค..
์ ๋ต ์ฝ๋
import java.io.*;
public class Main{
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int n = Integer.parseInt(br.readLine());
int[][] arr = new int[101][10];
for(int i = 1; i <= 9; i++) arr[1][i] = 1;
for(int i = 2; i <= n; i++){
arr[i][0] = arr[i-1][1];
arr[i][9] = arr[i-1][8];
for(int j = 1; j <= 8; j++) {
arr[i][j] = (arr[i-1][j+1] + arr[i-1][j-1]) % 1000000000;
}
}
int answer = 0;
for(int i = 0; i <= 9; i++) {
answer = (answer + arr[n][i]) % 1000000000;
}
bw.write(String.valueOf(answer));
bw.flush();
bw.close();
}
}
๋๊ธ