[PS] 99ํด๋ฝ ์ฝํ ์คํฐ๋ 22์ผ์ฐจ TIL (๋ฉ๋ฆฌ ๋ฐ๊ธฐ)
ํ๊ทธ: 99ํด๋ฝ, PS, TIL, ๋์ ๊ณํ๋ฒ, ์ฝ๋ฉํ ์คํธ์ค๋น, ํญํด99
์นดํ ๊ณ ๋ฆฌ: PS
![]()
๋ฌธ์

์ค๋ช
์ ๋ ฅ ๊ฐ n ์ด ์ฃผ์ด์ก์ ๋, 1๊ณผ 2์ ํฉ์ผ๋ก๋ง ๊ทธ ์๋ฅผ ๋ง๋๋ ๊ฒฝ์ฐ์ ์๋ฅผ ๊ตฌํ๋ ๋ฌธ์
ํ์ด
๋์ ๊ณํ๋ฒ(๋ค์ด๋๋ฏน ํ๋ก๊ทธ๋๋ฐ, DP) : ๊ฐ๊ฐ์ ๊ฒฝ์ฐ์ ์๋ฅผ ๋์๋ฆฌ๊ฐ 1๋ก ๋๋๋ ๊ฒฝ์ฐ์ 2๋ก ๋๋๋ ๊ฒฝ์ฐ๋ก ๋ถ๋ฆฌํด์ ์ ์ด๋ณด๋ฉด ์๋์ ๊ฐ๋ค.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
// n = 3
[2,1]
[1,1,1]
[1,2]
// 1๋ก ๋๋๋ ๊ฒฝ์ฐ: 2๊ฐ,
// 2๋ก ๋๋๋ ๊ฒฝ์ฐ: 1๊ฐ
// n = 4
[2, 1, 1]
[1, 2, 1]
[1, 1, 1, 1]
[1, 1, 2]
[2, 2]
// 1๋ก ๋๋๋ ๊ฒฝ์ฐ: 3๊ฐ,
// 2๋ก ๋๋๋ ๊ฒฝ์ฐ: 2๊ฐ
// n = 5
[2, 1, 1, 1]
[1, 2, 1, 1]
[1, 1, 1, 1, 1]
[1, 1, 2, 1]
[2, 2, 1]
[2, 1, 2]
[1, 2, 2]
[1, 1, 1, 2]
// 1๋ก ๋๋๋ ๊ฒฝ์ฐ: 5๊ฐ,
// 2๋ก ๋๋๋ ๊ฒฝ์ฐ: 3๊ฐ
์๊ฐํด๋ณด๋ฉด, ๋ง์ง๋ง์ 1์ ๋ํ๋ ๊ฒฝ์ฐ์ ์๋ n - 1 ๊ฒฝ์ฐ์ ์์ ๊ฐ๋ค. ๋ง์ฐฌ๊ฐ์ง๋ก ๋ง์ง๋ง์ 2๋ฅผ ๋ํ๋ ๊ฒฝ์ฐ๋ n - 2 ์ ๊ฒฝ์ฐ์ ์์ ๊ฐ๋ค.
์๋ฅผ ๋ค์ด n = 5์ผ๋ 1๋ก ๋๋๋ ๊ฒฝ์ฐ๋ n = 4์ ์ผ์ด์ค์ 1๋ง ๋ํด์ฃผ๋ ๊ฒฐ๊ณผ์ด๋ฏ๋ก 4์ ๊ฒฝ์ฐ์ ์์ ๊ฐ๊ณ 2๋ก ๋๋๋ ๊ฒฝ์ฐ๋ n = 3 ์ ์ผ์ด์ค์ 2๋ฅผ ๋ํด์ค ๊ฒฐ๊ณผ์ ๊ฐ๋ค.
์ด๋ฅผ ์์ผ๋ก ๋ํ๋ด๋ฉด i(n) = i(n - 1) + i(n - 2) ๊ฐ ๋๋ค.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class Solution {
public long solution(int n) {
long answer;
int[] dp = new int[2001];
dp[1] = 1;
dp[2] = 2;
dp[3] = 3;
for (int i = 4; i < dp.length; i++) {
dp[i] = (dp[i - 1] + dp[i - 2]) % 1234567;
}
answer = dp[n];
return answer;
}
}
ํ๊ณ
์ด๋ฐ ๋ฌธ์ ๋ ๊ฒฝ์ฐ์ ์๋ฅผ ์ ์ด๋ณด๋ฉด ํ ์ ์๋ ๋ฌธ์ ์ด์ง๋ง, ๊ทธ๋๋ ์ ํ์์ด ์ ๋ณด์ด์ง ์์๋ 1๋ก ๋๋๋ ์์, 2๋ก ๋๋๋ ์์ ๋ฑ์ผ๋ก ์ ์ด๋ณด๋ฉด ๊ท์น์ ๋ฐ๊ฒฌํ ์ ์๋ค.
๋๊ธ๋จ๊ธฐ๊ธฐ