[PS] 99ํด๋ฝ ์ฝํ ์คํฐ๋ 21์ผ์ฐจ TIL (ํผ๋ณด๋์น ์)
ํ๊ทธ: 99ํด๋ฝ, PS, TIL, ๋์ ๊ณํ๋ฒ, ์ฝ๋ฉํ ์คํธ์ค๋น, ํญํด99
์นดํ ๊ณ ๋ฆฌ: PS
๋ฌธ์
์ค๋ช
์ ๋ ์๋ฅผ ๋ํ ์๊ฐ ๋ค์ ์๊ฐ ๋๋ ํผ๋ณด๋์น ์๋ฅผ ๊ตฌํ๋ ๋ฌธ์
ํ์ด
๋์ ๊ณํ๋ฒ(๋ค์ด๋๋ฏน ํ๋ก๊ทธ๋๋ฐ, DP) : ํผ๋ณด๋์น ์์ด์ ์ ํ์ ์ธ dp ๋ฌธ์ ๋ค. ์ด๊ธฐ ์ํ๊ฐ ๋ค์ ๊ฒฐ๊ณผ์ ๊ณ์ํด์ ์ํฅ์ ์ฃผ๋ ์์ด์ด๋ผ ์ ํ์์ ๋์ถ ํ ์ ์๊ณ , ์ด๋ฅผ ๋ชจ๋ ์ ๋ ฅ๊ฐ์ ๋ํด ๋ฏธ๋ฆฌ ์ธํ ํด ๋๊ณ ๊บผ๋ด๋ ๋ฐฉ์์ด๋ค. bottom-up ๋ฐฉ์์ด ์ต์ํด์ ํด๋น ๋ฐฉ์์ผ๋ก ํ์๋ค. ํผ๋ณด๋์น ์์ด์์ ์ ์ผ ์ฒ์ ๋์ค๋ ์๋ 0 ์ด๊ณ ๊ทธ๋ค์ ์๋ 1๋ก ๊ณ ์ ์ด๋ฏ๋ก, dp ๋ฐฐ์ด์ ๊ฐ๊ฐ 0, 1 ์ ๋ฃ์ด์ฃผ๊ณ ์์ํ๋ค. ๊ทธ ๋ค์ ์ซ์๋ถํฐ๋ ์ ๋ ์ซ์๋ฅผ ๋ํด์ ๋์ค๋ ๊ฒฐ๊ณผ๋ฅผ ์ ์ฅํ๋ฉด ๋๋ค.
์ ๋ ฅ๋๋ ์์ ๋ฒ์๊ฐ ์ต๋ 10๋ง ์ด๋ฏ๋ก dp ๋ฐฐ์ด์ ๋ฏธ๋ฆฌ 10๋ง ํฌ๊ธฐ๋ก ๋ง๋ค์ด ๋๋ค. ์ธ๋ฑ์ค์ ๊ฐ์ ๋์ผํ๊ฒ ์ฌ์ฉํ๊ธฐ ์ํด ๋ฐฐ์ด ํฌ๊ธฐ๋ n + 1 ๋ก ์ ์ํ๋ค. dp ๋ฌธ์ ๋ค์ ๋ณดํต ๋ค๋ก ๊ฐ์๋ก ์๊ฐ ๋งค์ฐ ์ปค์ง๊ธฐ ๋๋ฌธ์ ๋๋ ๋๋จธ์ง๋ฅผ ๊ตฌํ๋ผ๊ณ ๋์ค๊ธฐ ๋๋ฌธ์, dp ๋ฐฐ์ด์ ๋ฏธ๋ฆฌ ๋๋ ๋๋จธ์ง ๊ฐ์ ์ ์ฅํด ๋๋ค.
๋ฐ๋ณต๋ฌธ์ ๋ชจ๋ ๋๊ณ ๋๋ฉด dp ๋ฐฐ์ด์ 1๋ถํฐ 10๋ง๊น์ง ๋ชจ๋ ์์ฐ์์ ๋ํ ํผ๋ณด๋์น ์๊ฐ ๋ค์ด์๋ค. ์ ๋ต ๋์ถ ์์๋ ๋จ์ํ n ๋ฒ์งธ ๊ฐ์ ๊บผ๋ด์ค๊ธฐ๋ง ํ๋ฉด๋๋ค.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class Solution {
public int solution(int n) {
int answer = 0;
int MOD = 1234567;
int[] dp = new int[1000001];
dp[0] = 0;
dp[1] = 1;
for (int i = 2; i < dp.length; i++) {
dp[i] = (dp[i - 1] + dp[i - 2]) % MOD;
}
answer = dp[n];
return answer;
}
}
ํ๊ณ
์ฌ์ค ํผ๋ณด๋์น ์์ด์ ๋๋ฌด ์ ์๋ ค์ ธ ์์ด ์ ํ์๋ ๊ธ๋ฐฉ ๋์ถ๋๊ณ , ์ ํ์์ ํ๋ฉด ๋ต์ผ๋ก ์ด์ด์ง๊ธฐ ๋๋ฌธ์ ํฌ๊ฒ ๊ณ ๋ฏผํ ํ์๊ฐ ์๋ค.
dp ๋ฌธ์ ์ ํต์ฌ์ ์ ํ์์ ์ฐพ์๋ด๋ ๊ฒ์ด๋ค. ์ ํ์์ ์ฐพ๋ ๊ณผ์ ์ด ๋ฌธ์ ์ ๋ฐ๋ผ ์ฝ์ง ์์ ๊ฒฝ์ฐ๊ฐ ์๋ค. ๋ฌธ์ ์์์ ์ด๋ค ๊ท์น์ ๋ฐ๊ฒฌํด ๋ ๋ค๋ฅธ ์์ ๋ฌธ์ ๋ฅผ ์ ์ํด์ผ ํ๋ค. ๊ทธ๋ฆฌ๊ณ ๊ทธ ๋ฌธ์ ๋ฅผ ํธ๋ ๊ฒ์ด ๊ฒฐ๊ณผ์ ์ํฅ์ ์ค๋ค๋ฉด ๋ฐฉํฅ์ ์ ์ก์๋ค๊ณ ๋ณด๋ฉด๋๋ค.
๋๊ธ๋จ๊ธฐ๊ธฐ