๋ฐ์ํ
https://www.acmicpc.net/problem/11726
์ฝ๋
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main{
public static void main(String[] args) throws IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(bf.readLine());
int[] dp = new int[1001];
dp[1] = 1;
dp[2] = 2;
for(int i=3; i<=1000; i++) {
dp[i] = (dp[i-2] + dp[i-1]) % 10007;
}
System.out.println(dp[n]);
bf.close();
}
}
ํ์ด
DP๋ก ๊ตฌํํ๋ค.
์ ๊ทธ๋ฆผ์ ๋ณด๋ฉด ๋งจ ์ค๋ฅธ์ชฝ์ ๋์ ์ ์๋ ๊ฒฝ์ฐ์ ์๋
2x1 ํ์ผ์ ์ธ๋ก๋ก ํ๋๋ง ๋๋ ๊ฒฝ์ฐ -> d[n-1]
2x2 ํ์ผ์ ๊ฐ๋ก๋ก ๋๊ฐ ๋๋ ๊ฒฝ์ฐ -> d[n-2]๋ก,
d[n] = d[n-1] + d[n-2] ์ ์ ํ์์ด ๋์จ๋ค.(ํผ๋ณด๋์น ์์ด)
๋ํ ์ฃผ์ํ ์ ์, n์ด 1000๊น์ง ์์ผ๋ฏ๋ก ์ ํ์์ ๊ฒฐ๊ณผ์์ 10007์ ๋๋จธ์ง๋ฅผ ์ ์ฅํด์ฃผ์ง ์์ผ๋ฉด int ๋ฐฐ์ด์ ๋ฒ์๋ฅผ ๋ฒ์ด๋๊ฒ ๋๋ค. ๋ฐ๋ผ์ ๋ํ ๋, 10007์ ๋๋ ๋๋จธ์ง๋ฅผ ์ ์ฅํ๋ฉด ์ค๋ฒํ๋ก์ฐ๊ฐ ๋ฐ์ํ์ง ์๋๋ค.
๋ฐ์ํ
'Algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค] 1065๋ฒ: ํ์(์์ ํ์, brute force) (0) | 2020.02.26 |
---|---|
[๋ฐฑ์ค] 1149๋ฒ: RGB๊ฑฐ๋ฆฌ(DP) (0) | 2020.02.26 |
[Codeforces] 1223A: CME (0) | 2020.02.25 |
[๋ฐฑ์ค] 1268๋ฒ: ์์ ๋ฐ์ฅ ์ ํ๊ธฐ(๊ตฌํ) (0) | 2020.02.24 |
[Codeforces] 1200A: Cards (0) | 2020.02.24 |
๋๊ธ