๋๋ฌด ์ค๋๋ง์ DP ํ์๋๋ ์ด์ผํ๋๊ฑด์ง ์์ ๊น๋จน์๋๋ฐ
์ธํฐ๋ท์ ์น์๋ง์ ๋ ์ค๋ฆ
DP == ์ ํ์ ์ธ์ฐ๊ธฐ
๊ทธ๋์ DP ๊ธฐ๋ณธ ๋ฌธ์ ๋ ์ฝ๋ฉ๋ณด๋ค๋ ์ํ๋ฌธ์ ํธ๋ ๊ฒ ๊ฐ์ ๋๋์ด ๋ ๋ค..
์ฒ์์ ์ด์ํ ์งํ๋ค๊ฐ ์ธํฐ๋ท์ ํ์ ๋น๋ ค ํํธ๋ฅผ ์ป์๊ณ , ๊ทธ ๋ต์
dp[i] = dp[i-3] + dp[i-2] + dp[i-1]
์๋ก, a5๋ฅผ ๊ตฌํ๋ค๊ณ ํด๋ณด๋ฉด
a4 ์ฆ 4๋ฅผ ๋ง๋๋ ๋ฐฉ๋ฒ์ ์ ๋ถ +1 ํ ๊ฒ
+
a3 ์ฆ 3์ ๋ง๋๋ ๋ฐฉ๋ฒ์ ์ ๋ถ +2 ํ ๊ฒ
+
a2 ์ฆ 2๋ฅผ ๋ง๋๋ ๋ฐฉ๋ฒ์ ์ ๋ถ +3 ํ ๊ฒ
์ด ๋ฐ๋ก 5๋ฅผ ๋ง๋๋ ๋ฐฉ๋ฒ์ ์ ๋ถ์ด๋ค.
(2) + 3
(3) + 2
(4) + 1
๊ดํธ ์์ ์๋ฅผ ๋ํ๋ด๋ ๋ฐฉ๋ฒ์ ์ด๋ฏธ ์์์ ๊ตฌํด๋จ์ผ๋, ๊ทธ ๋ฐฉ๋ฒ์๋ค๊ฐ ๊ฐ๊ฐ 3, 2, 1์ ๋ํ๋ฉด ๋จ
#include <cstdio>
int dp[12] = { 0, 1, 2, 4, };
int main(void)
{
int T, n, i;
scanf("%d", &T);
for (i = 4; i <= 12; i++)
dp[i] = dp[i - 1] + dp[i - 2] + dp[i - 3];
while (T--) {
scanf("%d", &n);
printf("%d\n", dp[n]);
}
return 0;
}
์๋ C++์ฐ๋ ๋์ง๋ง,,, ๊ท์ฐฎ์์ ๊ธฐ๋ณธ ํฌ๋งท์ ์ธํฐ๋ท ๋ฒ ๊ปด์ใ ใ ๋ค
a3๊น์ง๋ ์ ์ํด์ฃผ๊ณ a4๋ถํฐ ์ ํ์ ํ์ฉํด์ ๊ตฌํด์ฃผ๋ฉด ๋
๋ฉ๋ชจ๋ฆฌ๋ ์๊ฐ ์ ํ ์ ๊ฒฝ์ธ ํ์ ์๋๊ฒ, ์ฃผ์ด์ง๋ n์ด 11์ดํ๋ผ๊ณ ํด์ ๋ฏธ๋ฆฌ 12๊น์ง ์ ๋ถ ๋ํผ๋ฅผ ๋๋ ค์ ๋ฐฐ์ด์ ๊ฐ์ ์ ์ฅํด๋๊ณ ํ์ํ ๊ฐ์ ๋ถ๋ฌ์ค๋ฉด ๋๋ค
(๋ง์ฝ ์ด ๋ n์ด ์ปค์ง๊ณ ์๊ฐ์ ํ์ด ๊ฑธ๋ฆฌ๊ฒ ๋๋ฉด....? ์ผ ๊ณจ์น์ํ)
'๐ก๐ธ๐ธ๐ถ๐ฃ: ๐๐๐๐๐๐พ๐๐ฝ๐ > ์๊ณ ๋ฆฌ์ฆ ๋ฌธ์ ํ์ด' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
BOJ2468 : ์์ ์์ญ (Silver 1) (0) | 2023.02.05 |
---|---|
BOJ3184 : ์ (Silver 1) (0) | 2023.02.05 |
BOJ5671 : ํธํ ๋ฐฉ ๋ฒํธ (Silver 5) (0) | 2021.08.20 |
BOJ14889 : ์คํํธ์ ๋งํฌ (Silver 3) (0) | 2021.08.20 |
BOJ 2503 : ์ซ์์ผ๊ตฌ (Silver 5) (0) | 2021.08.20 |