2022. 1. 29. 00:56ใ๐ฑ Algorithm/DP
์ ๋ต ์ฝ๋
N = int(input())
array = [0, 1, 1, 1, 1, 1, 1, 1, 1, 1]
board = []
if N == 1:
print(9)
exit()
else:
board.append(array)
for n in range(1, N):
temp = []
for j in range(10):
if j == 0:
temp.append((board[n - 1][1]))
elif j == 9:
temp.append((board[n - 1][8]))
else:
temp.append((board[n - 1][j - 1] + board[n - 1][j + 1]))
board.append(temp)
print(sum(board[-1]) % 1000000000)
์ ๊ทผ ์ฌ๊ณ
N ์๋ฆฌ ์ ์ผ ๋ ์ด๋ค ์ซ์๋ก ๋๋๋์ ๋ฐ๋ฅธ ๊ฒฝ์ฐ์ ์๋ฅผ ์ ๋ฆฌํ ํ ์ด๋ธ์ด๋ค.
์๋ฅผ ๋ค์ด N = 2 ๋ ๋ ์๋ฆฌ์ ์์ฐ์๋ฅผ ๋ปํ๋ค. N = 2 ์ผ ๋ ๋์๋ฆฌ ์ซ์๊ฐ 3์ด๋ผ๋ฉด, ๋์ฌ ์ ์๋ ๊ฒฝ์ฐ์ ์
๊ฐ 2๊ฐ๋ผ๋ ๋ป์ด๋ค ( => 23, 43)
๋ง์ฐฌ๊ฐ์ง๋ก N = 3 ์ผ ๋ ๋์๋ฆฌ๊ฐ 9 ๋ผ๋ฉด, ๋์ฌ ์ ์๋ ๊ฒฝ์ฐ์ ์๋ 2์ด๋ค. (=> 789, 989)
์ ๋ฐ ํ
์ด๋ธ์ ์ด๋ป๊ฒ ๋์
์ผ๋ก ์ฑ์๋๊ฐ ์ ์์๊น? dp ๋ฅผ ๊ณ์ ํ๋ฉด์ ๋๋ผ๋ ๊ฑด ๋ฌธ์ ์์ ํญ์ ๋ชจ์ข
์ ๊ท์น์ฑ
์ด ์จ์ด์๋ค. ๋์๋ฆฌ ์ซ์๊ฐ 0 ๊ณผ 9 ์ผ ๋๋ฅผ ์ ์ธํ๊ณค, n ํ์ 1 ์์ 8๊น์ง์ ์ซ์(m
)๋ ์ด์ ํ(n - 1
)์ ์ ์ฌ์ด๋ (m - 1, m + 1
) ์ ํฉ์ด ๋๋ค.
์ฆ 0 ๊ณผ 9์ผ ๋๋ง ๋ฐ๋ก ๊ณ์ฐํ๊ณ , 1 ~ 8 ์ ํด๋น๋๋ ๊ฒฝ์ฐ๋ ์ด์ ํ์ ์ ์ฌ์ด๋์์ ๋ํด์ค๋ฉด ๋๋ค. ์ด๊ฒ์ ์์ผ๋ก ํํํ๋ฉด ๋๋ค!
'๐ฑ Algorithm > DP' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋ฐฑ์ค 11055 ํ์ด์ฌ (0) | 2022.01.23 |
---|---|
๋ฐฑ์ค 1912 ํ์ด์ฌ (0) | 2022.01.20 |
๋ฐฑ์ค 11053 ํ์ด์ฌ (0) | 2022.01.18 |
๋ฐฑ์ค 12852 ํ์ด์ฌ (1) | 2022.01.12 |
๋ฐฑ์ค 2293 ํ์ด์ฌ (0) | 2022.01.09 |