[BOJ] 15990 1, 2, 3 ๋ํ๊ธฐ 5 (Python / ํ์ด์ฌ)
๐งท ๋ฌธ์
https://www.acmicpc.net/problem/15990
์ ์ n์ด ์ฃผ์ด์ก์ ๋, n์ 1, 2, 3์ ํฉ์ผ๋ก ๋ํ๋ด๋ ๊ณผ์ ์์ ๊ฐ์ ์๋ฅผ ๋ ๋ฒ ์ด์ ์ฐ์ํด์ ์ฌ์ฉํ์ง ์๋ ๋ฐฉ๋ฒ์ ์๋ฅผ ๊ตฌํ๋ ๋ฌธ์ ์ด๋ค.
๐ ํ์ด
์ด ๋ฌธ์ ๋ DP table์ 1์ฐจ์์ด ์๋ 2์ฐจ์์ผ๋ก ๊ตฌ์ฑํด์ผ ํด๊ฒฐํ ์ ์๋ค.
Step 1.
๋จผ์ ๊ฐ ์ธ๋ฑ์ค์ DP table์ ๊ธธ์ด 4์ ๋ฆฌ์คํธ๋ก ๋ฐ๋๋ฐ 0๋ฒ ์ธ๋ฑ์ค์๋ n์ ๋ง๋ค ์ ์๋ ๋ฐฉ๋ฒ์ ์, 1 ~ 3๋ฒ ์ธ๋ฑ์ค์๋ ๊ฐ ์ธ๋ฑ์ค๋ก ๋๋๋ ๋ฐฉ๋ฒ์ ์๋ฅผ ๋ฃ์ด์ค๋ค.
์๋ฅผ ๋ค๋ฉด d[3]
์ ๊ฒฝ์ฐ 2 + 1, 1 + 2, 3 ์ด๋ ๊ฒ ์ด 3๊ฐ์ง์ ๊ฒฝ์ฐ๋ฅผ ๊ฐ์ง๊ณ ์๊ณ 1, 2, 3์ผ๋ก ๋๋๋ ๋ฐฉ๋ฒ์ด ๊ฐ 1๊ฐ์ฉ ์กด์ฌํ๋ฏ๋ก d[3] = [3, 1, 1, 1]
๋ก ์ด๊ธฐํํด์ค๋ค. ๊ฐ์ ๋ฐฉ๋ฒ์ผ๋ก d[1] = [1, 1, 0, 0]
, d[2] = [1, 0, 1, 0]
์ผ๋ก ํํํ ์ ์๋ค.
Step 2.
d[i], (4 โค i)
๋ถํฐ๋ d[i-1]
์ ๋ฐฉ๋ฒ์ ์์์ ๋์ด 1๋ก ๋๋์ง ์๋ ๊ฒฝ์ฐ, d[i-2]
์์ ๋์ด 2๋ก ๋๋์ง ์๋ ๊ฒฝ์ฐ, d[i-3]
์์ ๋์ด 3์ผ๋ก ๋๋์ง ์๋ ๊ฒฝ์ฐ๋ฅผ ๋ํ๋ฉด ๋๋ค.
์ด๊ฑธ ์ฝ๋๋ก ๋ฐ๊ฟ์ฃผ๋ฉด d[i][1] = d[i-1][0] - d[i-1][1], d[i][2] = d[i-2][0] - d[i-2][2], d[i][3] = d[i-3][0] - d[i-3][3]
์ด๋ค.
๋ฐ๋ณต์ ํผํ๊ธฐ ์ํด์ for๋ฌธ์ ์ด์ฉํ๋ฉด for j in range(1, 4): d[i][j] = d[i-j][0] - d[i-j][j]
๋ก ํํ ๊ฐ๋ฅํ๋ค.
Step 3.
์์์ d[n]
์ 0๋ฒ ์ธ๋ฑ์ค์๋ n์ ๋ง๋ค ์ ์๋ ๋ฐฉ๋ฒ์ ์๋ฅผ ๋ฃ์ด์ค๋ค๊ณ ํ์ผ๋ฏ๋ก, d[n][1] + d[n][2] + d[n][3]
์ ๊ฐ์ ๋ฃ์ด์ฃผ๊ณ ์ต์ข
์ ์ผ๋ก d[n][0]
์ ์ถ๋ ฅํ๋ฉด ์ํ๋ ๊ฐ์ ๊ตฌํ ์ ์๋ค.
๐ ๋์ ์ฝ๋
import sys
input = sys.stdin.readline
if __name__ == "__main__":
t = int(input())
d = [[0] * 4 for _ in range(100001)]
d[1] = [1, 1, 0, 0]
d[2] = [1, 0, 1, 0]
d[3] = [3, 1, 1, 1]
for i in range(4, 100001):
cnt = 0
for j in range(1, 4):
d[i][j] = d[i-j][0] - d[i-j][j]
cnt += d[i][j]
d[i][0] = cnt % 1000000009
for _ in range(t):
n = int(input())
print(d[n][0])
'Algorithm > Problem Solving' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[BOJ] 11053 ๊ฐ์ฅ ๊ธด ์ฆ๊ฐํ๋ ๋ถ๋ถ ์์ด (Pyhton / ํ์ด์ฌ) (0) | 2021.08.04 |
---|---|
[BOJ] 10844 ์ฌ์ด ๊ณ๋จ ์ (Python / ํ์ด์ฌ) (0) | 2021.08.04 |
[BOJ] 11052 ์นด๋ ๊ตฌ๋งคํ๊ธฐ (Python / ํ์ด์ฌ) (0) | 2021.08.01 |
[BOJ] 2004 ์กฐํฉ 0์ ๊ฐ์ (Python / ํ์ด์ฌ) (0) | 2021.07.30 |
[BOJ] 1929 ์์ ๊ตฌํ๊ธฐ (Python / ํ์ด์ฌ) (0) | 2021.07.30 |
๋๊ธ
์ด ๊ธ ๊ณต์ ํ๊ธฐ
-
๊ตฌ๋
ํ๊ธฐ
๊ตฌ๋ ํ๊ธฐ
-
์นด์นด์คํก
์นด์นด์คํก
-
๋ผ์ธ
๋ผ์ธ
-
ํธ์ํฐ
ํธ์ํฐ
-
Facebook
Facebook
-
์นด์นด์ค์คํ ๋ฆฌ
์นด์นด์ค์คํ ๋ฆฌ
-
๋ฐด๋
๋ฐด๋
-
๋ค์ด๋ฒ ๋ธ๋ก๊ทธ
๋ค์ด๋ฒ ๋ธ๋ก๊ทธ
-
Pocket
Pocket
-
Evernote
Evernote
๋ค๋ฅธ ๊ธ
-
[BOJ] 11053 ๊ฐ์ฅ ๊ธด ์ฆ๊ฐํ๋ ๋ถ๋ถ ์์ด (Pyhton / ํ์ด์ฌ)
[BOJ] 11053 ๊ฐ์ฅ ๊ธด ์ฆ๊ฐํ๋ ๋ถ๋ถ ์์ด (Pyhton / ํ์ด์ฌ)
2021.08.04 -
[BOJ] 10844 ์ฌ์ด ๊ณ๋จ ์ (Python / ํ์ด์ฌ)
[BOJ] 10844 ์ฌ์ด ๊ณ๋จ ์ (Python / ํ์ด์ฌ)
2021.08.04 -
[BOJ] 11052 ์นด๋ ๊ตฌ๋งคํ๊ธฐ (Python / ํ์ด์ฌ)
[BOJ] 11052 ์นด๋ ๊ตฌ๋งคํ๊ธฐ (Python / ํ์ด์ฌ)
2021.08.01 -
[BOJ] 2004 ์กฐํฉ 0์ ๊ฐ์ (Python / ํ์ด์ฌ)
[BOJ] 2004 ์กฐํฉ 0์ ๊ฐ์ (Python / ํ์ด์ฌ)
2021.07.30