๋ฌธ์
https://www.acmicpc.net/problem/9461
๋ด ๋ฌธ์ ํ์ด
t = int(input())
memory = [1, 1, 1, 2, 2, 3, 4, 5, 7, 9]
n = []
for _ in range(0, t): n.append(int(input()))
if max(n) > 10:
num = 10
while num < max(n):
memory.append(memory[num-1] + memory[num-5])
num += 1
for i in n: print(memory[i-1])
๐ DP ๋ฌธ์ ๋ก, ์ ํ์์ ๊ตฌํ๊ณ ๋ฉ๋ชจ์ด์ ์ด์ ํ์ฉํ๋๊ฒ ํฌ์ธํธ!
[์ ํ์]
- p(1) = 1
- p(2) = 1
- p(3) = 1
- p(4) = 2
- p(5) = 2
- p(6) = 3 = p(5) + p(1)
- p(7) = 4 = p(6) + p(2)
=> p(n) = p(n-1) + p(n-5) (n > 5)
(์ด ์ ํ์์ ์ฌ์ค ์ด๋ ๊ฒ ์จ๋ณด๋ ๊ฒ๋ณด๋ค, ๋ฌธ์ ์์ ์ฃผ์ด์ง ๊ทธ๋ฆผ์์
ํด๋น ์ซ์๊ฐ ์ฐ์ฌ์ง ์ผ๊ฐํ ํ ๋ณ์ ์ด๋ฃจ๋๊ฒ ๋ช ๋ฒ์งธ ์ผ๊ฐํ๋ค์ ๋ณ์ผ๋ก ์ด๋ฃจ์ด์ก๋์ง๋ฅผ ๋ณด๋ฉด ๋ฐ๋ก ์ ์ ์๋ค.)
[ํ์ด ์ค๋ช ]
- ์ด๋ฏธ ๊ตฌํด์ง 10๊น์ง์ ๋ณ์ ๊ธธ์ด๋ ๋ฏธ๋ฆฌ memory ๋ฆฌ์คํธ์ ๋ฃ์ด๋๊ณ ,
๋ฌธ์ ์์ ์ฃผ์ด์ง ์ ๋ ฅ์ ๋ชจ๋ ๋ฐ์ ํ ๊ทธ ์ ๋ ฅ๋ค ์ค ๊ฐ์ฅ ํฐ ์๊ฐ 10๋ณด๋ค ํด ๊ฒฝ์ฐ์๋ง
memory ๋ฆฌ์คํธ์ ์ฐ์ฐ ๊ฐ์ ์ถ๊ฐํด์ฃผ๋ ๋ฐ๋ณต ์ฐ์ฐ์ ์ํํด์ฃผ์๋ค. - ๋ฐ๋ณต ์ฐ์ฐ์ ์์์ ๊ตฌํ ์ ํ์์ ์ด์ฉํ์ฌ, while๋ฌธ์ผ๋ก ๊ตฌํํ๋ค.
๐ก ํผ๋๋ฐฑ
- ๊ทธ๋ฆผ์ ๋ณด๊ณ ๋ฐ๋ก ์ ํ์์ ๋ ์ฌ๋ฆด ์ ์๋ ๋ฌธ์ ์๊ณ , ๊ธ๋ฐฉ ํ์๋ค.
'4๏ธโฃ Python > Problem Solving' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Python Algorithm] ํ๋ฒํ ๋ฐฐ๋ญ BOJ #12865 (2) | 2021.11.25 |
---|---|
[Python Algorithm] ์ซ์์ ํํ Programmers(Lv.2) (0) | 2021.11.22 |
[Python Algorithm] 01ํ์ผ BOJ #1904 (0) | 2021.11.16 |
[Python Algorithm] ์ ๋๋ ํจ์ ์คํ BOJ #9184 (0) | 2021.11.16 |
[Python Algorithm] ํผ๋ณด๋์น ํจ์ BOJ #1003 (0) | 2021.11.16 |
๋๊ธ