๋ฐ์ํ
https://www.acmicpc.net/problem/9095
9095๋ฒ: 1, 2, 3 ๋ํ๊ธฐ
๊ฐ ํ ์คํธ ์ผ์ด์ค๋ง๋ค, n์ 1, 2, 3์ ํฉ์ผ๋ก ๋ํ๋ด๋ ๋ฐฉ๋ฒ์ ์๋ฅผ ์ถ๋ ฅํ๋ค.
www.acmicpc.net
โ๏ธ ๋ฌธ์
๐ ๋ฌธ์ ํด๊ฒฐ
1. ํ ์ด๋ธ ์ ์ํ๊ธฐ
ํ ์ด๋ธ์ dp[i]๋ฅผ 1,2,3์ผ๋ก ํํํ ์ ์๋ ํ์๋ก ์ค์ ํ๊ฒ ์ต๋๋ค.
2. ์ ํ์ ๊ตฌํ๊ธฐ
๋จผ์ dp[4]๋ ๋ณธ๋ฌธ์๋ ๋์์๋ฏ์ด ์๋์ ๊ฐ์ด ์ด 7๊ฐ์ง๊ฐ ์์ต๋๋ค.
์ด๊ฒ์ 1, 2, 3์ผ๋ก ๋๋ ์ ์๊ฐํด๋ณด์๋ฉด,
- ํ๋์ ์ซ์๋ฅผ
3
๋ก ๊ณ ์ ํ๊ณ , ๋๋จธ์ง 1์ 1, 2, 3์ผ๋ก ์กฐํฉํ๋ ๊ฒฝ์ฐ- 1 +
3
- 1 +
- ํ๋์ ์ซ์๋ฅผ
2
๋ก ๊ณ ์ ํ๊ณ , ๋๋จธ์ง 2๋ฅผ 1, 2, 3์ผ๋ก ์กฐํฉํ๋ ๊ฒฝ์ฐ- 1 + 1 +
2
- 2 +
2
- 1 + 1 +
- ํ๋์ ์ซ์๋ฅผ
1
๋ก ๊ณ ์ ํ๊ณ , ๋๋จธ์ง 3์ 1, 2, 3์ผ๋ก ์กฐํฉํ๋ ๊ฒฝ์ฐ- 1 + 1 + 1 +
1
- 1 + 2 +
1
- 2 + 1 +
1
- 3 +
1
- 1 + 1 + 1 +
dp[4] = dp[1] + dp[2] + dp[3];
dp[i] = dp[i-1] + dp[i-2] + dp[i-3];
3. ์ด๊ธฐ๊ฐ ์ธํ
์ด๊ธฐ๊ฐ์ ์์์ dp[4]๋ฅผ ๊ตฌํ ๊ณผ์ ์์ ์ป์ ๊ฐ๋ค์ ์๋์ ๊ฐ์ด ์ธํ ํ ์ ์์ต๋๋ค.
dp[1] = 1;
dp[2] = 2;
dp[3] = 3;
๐ ์ ์ฒด ์ฝ๋
import java.io.*;
public class Main {
public static void main(String args[]) throws IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
StringBuffer sb = new StringBuffer();
int[] dp = new int[12];
dp[1] = 1;
dp[2] = 2;
dp[3] = 4;
for(int i=4; i<= 11; i++) {
dp[i] = dp[i-1] + dp[i-2] + dp[i-3];
}
int N = Integer.parseInt(bf.readLine());
for(int i=0; i<N; i++){
sb.append(dp[Integer.parseInt(bf.readLine())] + "\n");
}
System.out.print(sb.toString());
}
}
๋ฐ์ํ