9461๋ฒ: ํ๋๋ฐ ์์ด
์ค๋ฅธ์ชฝ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ด ์ผ๊ฐํ์ด ๋์ ๋ชจ์์ผ๋ก ๋์ฌ์ ธ ์๋ค. ์ฒซ ์ผ๊ฐํ์ ์ ์ผ๊ฐํ์ผ๋ก ๋ณ์ ๊ธธ์ด๋ 1์ด๋ค. ๊ทธ ๋ค์์๋ ๋ค์๊ณผ ๊ฐ์ ๊ณผ์ ์ผ๋ก ์ ์ผ๊ฐํ์ ๊ณ์ ์ถ๊ฐํ๋ค. ๋์ ์์ ๊ฐ์ฅ ๊ธด ๋ณ์
www.acmicpc.net
์ค๋ช
์ฒซ ์ ์ผ๊ฐํ์ด 1์ผ ๋ ๋ณ์ ๊ธธ์ด๋ 1์ด๋ค. ์๋์ ๊ฐ์ ๊ทธ๋ฆผ์ฒ๋ผ ๋์ ํ์ผ๋ก ์ผ๊ฐํ์ด ์ด์ด์ง๋ค. ๋ง์ฝ 1, 1, 1, 2, 2, 3, 4, 5, 7, 9 ๊ฐ ์์ ๋ 10๋ฒ์งธ ์ผ๊ฐํ์ ๋ณ์ ๊ธธ์ด๋ 9์ด๋ค.
N์ด ์ฃผ์ด์ก์ ๋ N๋ฒ์งธ ์ผ๊ฐํ์ ๋ณ์ ๊ธธ์ด๋ฅผ ์ถ๋ ฅํ๋ฉด ๋๋ค.

ํ์ด
• Dynamic Programming ๋ฌธ์
ํผ๋ณด๋์น ์์ด๊ณผ ๋น์ทํ๋ค. ๊ท์น์ฑ์ ์ฐพ์๋ณด๋ฉด ์๋ ๊ทธ๋ฆผ์์ 1๋ฒ์งธ์ 2๋ฒ์งธ๋ฅผ ๋ํ๋ฉด 4๋ฒ์งธ ๊ฐ์ด ๋์จ๋ค. ๊ณ ๋ก, 4๋งํผ ์ฐจ์ด๊ฐ ๋๋ค.

๋ํ, ์๋ ๊ทธ๋ฆผ์ ๋ณด๋ฉด 1๋ฒ์งธ์ 5๋ฒ์งธ๋ฅผ ๋ํ๋ฉด 6๋ฒ์งธ ๊ฐ๊ณผ ๊ฐ๋ค.

์ด๋ฌํ ๊ท์น์ฑ์ ์ฐธ๊ณ ํด ๊ตฌํํ๋ค.
Solution
sol.1
#23:11 - 23:36
import sys
input = sys.stdin.readline
t = int(input()) #ํ
์คํธ ์ผ์ด์ค
def DP(n):
dp = [0] * (n)
dp[0] = 1
dp[1] = 1
dp[2] = 1
for i in range(3, n):
dp[i] = dp[i - 3] + dp[i - 2]
return dp[n-1]
for _ in range(t): #ํ
์คํธ ์ผ์ด์ค๋งํผ ๋ฐ๋ณต
n = int(input())
if n == 1 or n == 2 :
print(1)
else:
print(DP(n))
sol.2
#๋ค๋ฅธ ํ์ด
t = int(input())
l = [1,1,1,2,2]
for i in range(5, 100):
l.append(l[i-1]+l[i-5])
for _ in range(t):
n = int(input())
print(l[n-1])
๐ฉ๐ป ํ๊ณ
์ฒ์ ์ ์ถํ์ ๋ 'IndexError'๊ฐ ๋ด๋ค. ๋ฐ๋ก๋ฅผ ์๊ฐํด๋ณด๋ dp๋ฆฌ์คํธ๊ฐ n๋งํผ ์์ฑ๋๊ฒ ํ๋๋ฐ n = 1, 2 ์ผ ๋๋ ๊ณต๊ฐ์ด ์์ด์ ๋ฆฌ์คํธ์ ๊ฐ์ ๋ฃ์ง ๋ชปํ๊ณ , 3๋ฒ์งธ๋ถํฐ for๋ฌธ์ ๋๊ฒ ํ๋๋ฐ i๊ฐ 3์ผ ๋๋ ๋์ง ๋ชปํ๋ค๋ ๊ฑธ ๊นจ๋ฌ์๋ค. ๊ทธ๋์ DP ํจ์ ๋ด์์ ์กฐ๊ฑด์์ ์ถ๊ฐํ๋๋ฐ ๋ค์ ์๋ฌ๊ฐ ๋ด๋ค.
n์ด 2์ดํ์ผ ๋ ๋ฆฌ์คํธ 0๋ถํฐ 2๋ฒ์งธ ์ธ๋ฑ์ค๊น์ง ๊ฐ์ ๋ฃ๊ฒ ํ๋๋ n์ด 1์ผ ๋์ ๋ฌธ์ ๊ฐ ์๊ฒจ๋ฒ๋ฆฌ๋ ๊ฒ์ด์๋ค. ์กฐ๊ฑด์์ ํ๋ฒ์ ๊ฑธ์ด๋ฒ๋ ค์ main์ n์ด 1์ผ ๋์ 2์ผ ๋๋ฅผ ๋ฐ๋ก ๋๋ด๋๋ ์๋ฌ ์์ด ์ ์ถ์ด ๋๋ค.
์ฒซ ๋ฒ์งธ ํ์ด(๋ด ํ์ด)์ ๋ ๋ฒ์งธ ํ์ด(๋ค๋ฅธ ์ฌ๋๋ค ํ์ด)์ ๋ฉ๋ชจ๋ฆฌ์ ์๊ฐ์ ๊ฐ๋ค. ๊ทธ๋ฌ๋ ๊ฐ๊ฒฐํ ํ์ด๋ ๋ ๋ฒ์งธ ํ์ด์ด๋ค. DP๋ผ๊ณ ํด์ ๋ณต์กํ๊ฒ ์๊ฐํ ๊ฒ ๊ฐ๋ค. ์ข ๋ ๊น๋ํ ํ์ด๊ฐ ๋์ฌ ์ ์๊ฒ ์๊ฐ์ ์ค๋ ํด์ผ ํ ๊ฒ ๊ฐ๋ค.
'๐งฉ Algorithm > [BOJ] Silver' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| BOJ 10814๋ฒ : ๋์ด์ ์ ๋ ฌ (Python/์๋ฃ๊ตฌ์กฐ/Silver 5) (1) | 2023.10.31 |
|---|---|
| BOJ 11722๋ฒ : ๊ฐ์ฅ ๊ธด ๊ฐ์ํ๋ ๋ถ๋ถ ์์ด (Python/Silver 2) (1) | 2023.10.26 |
| BOJ 11053๋ฒ : ๊ฐ์ฅ ๊ธด ์ฆ๊ฐํ๋ ๋ถ๋ถ ์์ด (Python/Silver 2) (2) | 2023.10.22 |
| BOJ 2312๋ฒ : ์ ๋ณต์ํ๊ธฐ (Python/Silver 3) (0) | 2023.09.24 |
| BOJ 2960๋ฒ : ์๋ผํ ์คํ ๋ค์ค์ ์ฒด (Python/Silver 4) (0) | 2023.09.23 |