-
[๋ฐฑ์ค] 9461 ํ๋๋ฐ ์์ด with PythonPS 2022. 1. 10. 18:54728x90๋ฐ์ํ
๐ BOJ 9461 ํ๋๋ฐ ์์ด
๐ก ์กฐ๊ฑด
์ฒซ์งธ ์ค์ ํ ์คํธ ์ผ์ด์ค์ ๊ฐ์
T
๊ฐ ์ฃผ์ด์ง๋ค. ๊ฐ ํ ์คํธ ์ผ์ด์ค๋ ํ ์ค๋ก ์ด๋ฃจ์ด์ ธ ์๊ณ ,N
์ด ์ฃผ์ด์ง๋ค.(1 โค N โค 100)
ํ๋๋ฐ ์์ด
P(N)
์ ๋์ ์ ์๋ ์ ์ผ๊ฐํ์ ๋ณ์ ๊ธธ์ด.P(1)
๋ถํฐP(10)
๊น์ง ์ฒซ 10๊ฐ ์ซ์๋ 1, 1, 1, 2, 2, 3, 4, 5, 7, 9๊ฐ ํ ์คํธ ์ผ์ด์ค๋ง๋ค ์ ์
N
์ ์ ๋ ฅ๋ฐ์P(N)
์ ์ถ๋ ฅ.Dynamic Programming ์๊ณ ๋ฆฌ์ฆ ์ ํ์ ๋ฌธ์
๐ฅ ์์ค ์ฝ๋
from sys import stdin dp = [0 for _ in range(101)] dp[0], dp[1], dp[2] = 1, 1, 1 for i in range(3, 101): dp[i] = dp[i - 3] + dp[i - 2] for _ in range(int(stdin.readline())): print(dp[int(stdin.readline()) - 1])
๐ ์์ ๋ฐ ์คํ๊ฒฐ๊ณผ
์์
2 6 12
์คํ๊ฒฐ๊ณผ
3 16
โจ๏ธ ๋ฌธ์ ํ์ด
๋ฌธ์ ์์ ์ด๋ฏธ ์ ํ์์ ์ง๋ผ๊ณ
P(1)
๋ถํฐP(10)
๊น์ง ์ ๊ณตํด์ฃผ์๋ค.
๊ท์น์ ์ฐพ์ ์ ํ์์ ์ธ์๋ณด์๋ฉด,dp[i] = dp[i - 3] + dp[i - 2]
์ด ๋ ๊ฒ์ด๋ค.์ฌ๊ธฐ์
N
์ ๋ฒ์๋ฅผ ์ดํด๋ณด๋ฉด1๋ถํฐ 100๊น์ง
์ด๋ค.๋ฐฐ์ด์ ํฌ๊ธฐ๋ฅผ
101
๊ฐ๋ก ๋ ๋ค, ๋ฌธ์ ์์ ์ ๊ณตํด์ค ๊ฐ์ ๋ค ๋ฃ์ด๋ ์ข๊ณ , ์์ ์ธ๊ฐ๋ง ๋ฃ์ด ์ ํ์์ ํตํด
101๊ฐ์ ๋ฐฐ์ด์ ์ฑ์ฐ๋ ๊ฒ๋ ์ข๋ค.
- ๋ฐฐ์ด์ ์ฑ์ฐ๋๋ฐ์๋ ํฐ ์๊ฐ์ด ๊ฑธ๋ฆฌ์ง ์์ผ๋, ๋ฏธ๋ฆฌ ๋ชจ๋ ๊ตฌํด๋๊ณ ํ
์คํธ์ผ์ด์ค๋ง๋ค ์
๋ ฅ์ ๋ฐ์ ์ฒ๋ฆฌํ๋ค.
- ์ฌ๊ธฐ์, dp ๋ฆฌ์คํธ์ N-1๋ฒ์งธ๋ฅผ ์ถ๋ ฅํ์ง ์์ผ๋ฉด ์๋ฑํ ๋ต์ด ๋์ค๊ฑฐ๋, index์๋ฌ๋ฅผ ๋ฑ๊ณ ์ฃฝ์ด๋ฒ๋ฆด ์ ์์ผ๋ ์กฐ์ฌํ์.
๐พ ๋๋์
- ๋๋ฌด๋๋ ์๋ฅํ๊ณ ์น์ ํ DP๋ฌธ์ ์๋ค.
๋ฐ์ํ'PS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค] 11504 ๋๋ ค ๋๋ ค ๋๋ฆผํ! with Python (0) 2022.01.11 [๋ฐฑ์ค] 10819 ์ฐจ์ด๋ฅผ ์ต๋๋ก with Python (0) 2022.01.11 [๋ฐฑ์ค] 1535 ์๋ with Python (0) 2022.01.10 [๋ฐฑ์ค] 1063 ํน with Python (0) 2021.12.29 [๋ฐฑ์ค] 20546 ๐ ๊ธฐ์ ์ ๋งค๋งค๋ฒ ๐ with Python (0) 2021.12.18