https://programmers.co.kr/learn/courses/30/lessons/12900
๋ฌธ์ ์ค๋ช
๊ฐ๋ก ๊ธธ์ด๊ฐ 2์ด๊ณ ์ธ๋ก์ ๊ธธ์ด๊ฐ 1์ธ ์ง์ฌ๊ฐํ๋ชจ์์ ํ์ผ์ด ์์ต๋๋ค. ์ด ์ง์ฌ๊ฐํ ํ์ผ์ ์ด์ฉํ์ฌ ์ธ๋ก์ ๊ธธ์ด๊ฐ 2์ด๊ณ ๊ฐ๋ก์ ๊ธธ์ด๊ฐ n์ธ ๋ฐ๋ฅ์ ๊ฐ๋ ์ฑ์ฐ๋ ค๊ณ ํฉ๋๋ค. ํ์ผ์ ์ฑ์ธ ๋๋ ๋ค์๊ณผ ๊ฐ์ด 2๊ฐ์ง ๋ฐฉ๋ฒ์ด ์์ต๋๋ค.
- ํ์ผ์ ๊ฐ๋ก๋ก ๋ฐฐ์น ํ๋ ๊ฒฝ์ฐ
- ํ์ผ์ ์ธ๋ก๋ก ๋ฐฐ์น ํ๋ ๊ฒฝ์ฐ
์๋ฅผ๋ค์ด์ n์ด 7์ธ ์ง์ฌ๊ฐํ์ ๋ค์๊ณผ ๊ฐ์ด ์ฑ์ธ ์ ์์ต๋๋ค.
์ง์ฌ๊ฐํ์ ๊ฐ๋ก์ ๊ธธ์ด n์ด ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง ๋, ์ด ์ง์ฌ๊ฐํ์ ์ฑ์ฐ๋ ๋ฐฉ๋ฒ์ ์๋ฅผ return ํ๋ solution ํจ์๋ฅผ ์์ฑํด์ฃผ์ธ์.
์ ํ ์ฌํญ
- ๊ฐ๋ก์ ๊ธธ์ด n์ 60,000์ดํ์ ์์ฐ์ ์ ๋๋ค.
- ๊ฒฝ์ฐ์ ์๊ฐ ๋ง์ ์ง ์ ์์ผ๋ฏ๋ก, ๊ฒฝ์ฐ์ ์๋ฅผ 1,000,000,007์ผ๋ก ๋๋ ๋๋จธ์ง๋ฅผ returnํด์ฃผ์ธ์.
ํ์ด
๊ฐ๋จํ DP ๋ฌธ์ โผ๏ธ
2๊ฐ์ง ๊ฒฝ์ฐ๋ก ๋๋ ์ ์๋ค.
CASE 1๏ธโฃ n-1 ๊น์ง ๋ชจ๋ ๊ฐ๋ ์ฐฌ ๊ฒฝ์ฐ
N = 1 ์ ํ ๊ฐ์ง ๊ฒฝ์ฐ๋ฟ์ด๋ค. ๐ dp[n-1] ๊ฒฝ์ฐ! dp[n] += dp[n-1]
CASE 2๏ธโฃ n-2 ๊น์ง ๋ชจ๋ ๊ฐ๋ ์ฐฌ ๊ฒฝ์ฐ
N = 2 ์ ๋ ๊ฐ์ง ๊ฒฝ์ฐ์ด๋ค. but โผ๏ธ ์ธ๋ก ํ์ผ ๋ ๊ฐ๊ฐ ๋ถ์ ๊ฒฝ์ฐ๋ case 1๊ณผ ๊ฒน์น๋ ๊ฒฝ์ฐ์ด๋ค.
๐ dp[n-2] ๊ฒฝ์ฐ! dp[n] += dp[n-2]
CASE 3๏ธโฃ n-3 ๊น์ง ๋ชจ๋ ๊ฐ๋ ์ฐฌ ๊ฒฝ์ฐ
N = 3 ์ ์ด 3๊ฐ์ง์ด๋ค. ๊ทธ๋ฌ๋ ๋ชจ๋ case 1, 2 ์ ๊ฒน์น๋ค.
โผ๏ธdp[n] = dp[n-1] + d[n-2]
์ฝ๋
public class pg_2xnํ์ผ๋ง {
public static int solution(int n) {
int[] dp = new int[n+1];
dp[1] = 1;
dp[2] = 2;
for(int i = 3; i <= n ; i++){
dp[i] = (dp[i-1] + dp[i-2]) % 1000000007;
}
return dp[n] % 1000000007;
}
public static void main(String[] args) {
System.out.println(solution(4));
}
}
'์๊ณ ๋ฆฌ์ฆ > ํ๋ก๊ทธ๋๋จธ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ ํ๋ก๊ทธ๋๋จธ์ค / Programmers Level 3 ] ๋ฑ๊ตฃ๊ธธ (0) | 2021.09.29 |
---|---|
[ ํ๋ก๊ทธ๋๋จธ์ค / Programmers Level 3 ] ์ด์ค์ฐ์ ์์ํ (0) | 2021.09.29 |
[ ํ๋ก๊ทธ๋๋จธ์ค / Programmers Level 3 ] ๋ถ๋ ์ฌ์ฉ์ (0) | 2021.09.28 |
[ ํ๋ก๊ทธ๋๋จธ์ค / Programmers Level 3 ] ๋ณด์ ์ผํ (0) | 2021.09.23 |
[ ํ๋ก๊ทธ๋๋จธ์ค / Programmers Level 3 ] ํ ํธ์ง (0) | 2021.09.23 |