2023. 3. 8. 16:39ใ์ฝ๋ฉํ ์คํธ ์ฐ์ต/ํ๋ก๊ทธ๋๋จธ์ค_2023
https://school.programmers.co.kr/learn/courses/30/lessons/12914
ํ๋ก๊ทธ๋๋จธ์ค
์ฝ๋ ์ค์ฌ์ ๊ฐ๋ฐ์ ์ฑ์ฉ. ์คํ ๊ธฐ๋ฐ์ ํฌ์ง์ ๋งค์นญ. ํ๋ก๊ทธ๋๋จธ์ค์ ๊ฐ๋ฐ์ ๋ง์ถคํ ํ๋กํ์ ๋ฑ๋กํ๊ณ , ๋์ ๊ธฐ์ ๊ถํฉ์ด ์ ๋ง๋ ๊ธฐ์ ๋ค์ ๋งค์นญ ๋ฐ์ผ์ธ์.
programmers.co.kr
๋ฌธ์ ์ค๋ช
ํจ์ง์ด๋ ๋ฉ๋ฆฌ ๋ฐ๊ธฐ๋ฅผ ์ฐ์ตํ๊ณ ์์ต๋๋ค. ํจ์ง์ด๋ ํ๋ฒ์ 1์นธ, ๋๋ 2์นธ์ ๋ธ ์ ์์ต๋๋ค. ์นธ์ด ์ด 4๊ฐ ์์ ๋, ํจ์ง์ด๋
(1์นธ, 1์นธ, 1์นธ, 1์นธ)
(1์นธ, 2์นธ, 1์นธ)
(1์นธ, 1์นธ, 2์นธ)
(2์นธ, 1์นธ, 1์นธ)
(2์นธ, 2์นธ)
์ 5๊ฐ์ง ๋ฐฉ๋ฒ์ผ๋ก ๋งจ ๋ ์นธ์ ๋๋ฌํ ์ ์์ต๋๋ค. ๋ฉ๋ฆฌ๋ฐ๊ธฐ์ ์ฌ์ฉ๋ ์นธ์ ์ n์ด ์ฃผ์ด์ง ๋, ํจ์ง์ด๊ฐ ๋์ ๋๋ฌํ๋ ๋ฐฉ๋ฒ์ด ๋ช ๊ฐ์ง์ธ์ง ์์๋ด, ์ฌ๊ธฐ์ 1234567๋ฅผ ๋๋ ๋๋จธ์ง๋ฅผ ๋ฆฌํดํ๋ ํจ์, solution์ ์์ฑํ์ธ์. ์๋ฅผ ๋ค์ด 4๊ฐ ์
๋ ฅ๋๋ค๋ฉด, 5๋ฅผ returnํ๋ฉด ๋ฉ๋๋ค.
์ ํ ์ฌํญ
- n์ 1 ์ด์, 2000 ์ดํ์ธ ์ ์์ ๋๋ค.
์ ์ถ๋ ฅ ์
4 | 5 |
3 | 3 |
์
์ถ๋ ฅ ์ #1
์์์ ์ค๋ช
ํ ๋ด์ฉ๊ณผ ๊ฐ์ต๋๋ค.
์
์ถ๋ ฅ ์ #2
(2์นธ, 1์นธ)
(1์นธ, 2์นธ)
(1์นธ, 1์นธ, 1์นธ)
์ด 3๊ฐ์ง ๋ฐฉ๋ฒ์ผ๋ก ๋ฉ๋ฆฌ ๋ธ ์ ์์ต๋๋ค.
๋์ ํ์ด
public long solution(int n) {
int[] dp = new int[2001];
dp[1] = 1;
dp[2] = 2;
for (int i = 3; i < dp.length; i++)
{
dp[i] = dp[i-2] + dp[i-1] % 1234567;
}
return dp[n];
}
์ด ๋ฌธ์ ๋ฅผ ๋ณด๊ณ ์ด๋ป๊ฒ ํ๊น ํ๋ค๊ฐ.. ๋ถํ ๊ณผ ์ ๋ณต์ ํ์ฉํ๋ผ๋ ํํธ๋ฅผ ์ป์๋ค.
n = 1 ์ผ ๋,
1
1๊ฐ์ง ๋ฐฉ๋ฒ์ด๊ณ
n = 2 ์ผ ๋,
1 + 1
2
2๊ฐ์ง ๋ฐฉ๋ฒ์ด๋ฉฐ,
n = 3 ์ผ ๋,
1+ 1 + 1
1 + 2
2 + 1
3 ๊ฐ์ง ๋ฐฉ๋ฒ์ด๊ณ ,
n = 4 ์ผ ๋,
1+ 1 + 1 + 1
1 + 1 + 2
1 + 2 + 1
2 + 1 + 1
2 + 2
5๊ฐ์ง ๋ฐฉ๋ฒ์ผ๋ก
n = 5 ์ผ ๋,
1 + 1 + 1 + 1 + 1
1 + 1 + 1 + 2
1 + 1 + 2 + 1
1 + 2 + 1 + 1
2 + 1 + 1 + 1
1 + 2 + 2
2 + 1 + 2
2 + 2 + 1
8 ๊ฐ์ง ๋ฐฉ๋ฒ...
์ด๋ ๊ฒ (n- 2) + (n-1) % 1234567 ํ ๊ฐ์ธ๊ฑธ ํ์ธํ ์ ์๋ค.
๋ฐ๋ผ์ ์ฝ๋๋ฅผ ์์์ฒ๋ผ ์งฐ๊ณ , n์ 2000์ดํ ๋ผ๊ณ ๋ฌธ์ ์์ ์ ํ์ฌํญ์ผ๋ก ๋์์๊ธฐ ๋๋ฌธ์ dp ์ ๊ธธ์ด๋ฅผ 2001๋ก ์ง์ ํด์คฌ๋ค.