โถ ๋ฌธ์ : https://www.acmicpc.net/problem/9095
=> ๊ธฐ์กด ๋ฐฑ์ค ๋ฌธ์ ๋ฅผ Javascript๋ฅผ ์ด์ฉํด ํ์ดํ์์๋๋ฐ, ์ ์ถ๋ ฅ๊ด๋ จํด์ ๋ง๊ฒ ํ์ด๋ ํ๋ฆฌ๋ค ๋์ค๋ ๊ฒฝ์ฐ๊ฐ ์์ด์ ๋ฐฑ์ค์ ๊ฒฝ์ฐ๋ python์ ์ฌ์ฉํด์ ํ์ดํ๊ธฐ๋ก ๊ฒฐ์ ํ์๋ค.
โถ ์ฝ๋ :
# https://www.acmicpc.net/problem/9095
# ๋ฐฑ์ค 1, 2, 3 ๋ํ๊ธฐ
T = int(input())
testCase = []
for t in range(T):
testCase.append(int(input()))
maxNum = max(testCase)
dp = [0 for _ in range(maxNum+1)]
dp[1] = 1
dp[2] = 2
dp[3] = 4
for i in range(4, maxNum+1):
dp[i] = dp[i - 1] + dp[i - 2] + dp[i - 3]
for t in testCase:
print(dp[t])
โถ ๋ฌธ์ ํ์ด :
- DP ๋ฌธ์ ์ด๋ค.
1. ์ด๊ธฐ ์ ๋ ฅ์ ๋ฐ์ ์ ๋ ฅ ์ค ๊ฐ์ฅ ํฐ์๋ฅผ ์ฐพ๋๋ค.
2. ๊ทธํ maxNum๋งํผ ๋ฐ๋ณต๋ฌธ์ ๋๋ฉฐ dp ๋ฐฐ์ด์ ๊ฐ์ ์ ์ฅํ๋ค.
=> ํด๋น ๋ฌธ์ ์์๋ 1, 2, 3์ผ๋ก ๋ง์ ์ ํํํ๋ ๋ชจ๋ ๊ฒฝ์ฐ์ ์๋ฅผ ์ถ๋ ฅํ๋ ๋ฌธ์ ์ด๋ค.
=> ์ด๋ ๊ฐ ์ ๋ณ๋ก ์์ํ๋ ๊ฐ์ด 1, 2, 3 ์ผ๋ ๋์ฌ ์ ์๋ ๋ชจ๋ ๊ฒฝ์ฐ์ ์๋ฅผ ์ฐพ๊ธฐ ์ํ ์ ํ์์
F(n) = F(n-1) + F(n-2) + F(n-3)
์ด๋ค.
๋ฐ๋ผ์ ์์ ์ ํ์์ ์ด์ฉํด for๋ฌธ์ ๋๋ ค์ฃผ๋ฉด dp ๋ฐฐ์ด์ ๋์ ํ๊ณ , ์ด๋ ์ฃผ์ด์ง ์ ๋ ฅ์์ ๊ฐ์ฅ ํฐ ์๋งํผ ๋ฐ๋ณตํ๋ฉฐ ๋ฐฐ์ด์ ์ฑ์ด๋ค์ ๊ฒฐ๊ณผ๋ฅผ ์ถ๋ ฅํด์ค๋ค.
'๐ฏ CodingTest > BaekJoon' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[BaekJoon] 17626๋ฒ Four Squares (0) | 2022.06.03 |
---|---|
[BaekJoon] 17219๋ฒ ๋น๋ฐ๋ฒํธ ์ฐพ๊ธฐ (0) | 2022.06.03 |
[BaekJoon] 11724๋ฒ ์ฐ๊ฒฐ ์์์ ๊ฐ์ (0) | 2022.06.03 |
[BaekJoon] 2606๋ฒ ๋ฐ์ด๋ฌ์ค (0) | 2022.06.02 |
[BaekJoon] 2579๋ฒ ๊ณ๋จ ์ค๋ฅด๊ธฐ (0) | 2022.06.02 |