👀 문제
https://www.acmicpc.net/problem/9095
👊 도전
1. 설계
- 규칙을 찾아낸 후 DP의 bottom-up 방법으로 해결한다.
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
import java.util.Scanner;
/**
* @author HEESOO
*
*/
public class Main {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner scan = new Scanner(System.in);
int t=scan.nextInt();
int[] dp=new int[11];
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];
for(int i=0;i<t;i++) {
int n=scan.nextInt();
System.out.println(dp[n]);
}
}
}
3. 결과
🤟 성공 🤟
4. 설명
- DP로 해결한다
- dp[1]=1 (1), dp[2]=2 (1+1, 2), dp[3]=4 (1+1+1, 2+1, 1+2, 3), dp[4]=7 (1+..+1, 2+2, 3+1, 1+3, 1+1+2, 1+2+1, 2+1+1), dp[5]=13 (1+..+1, 2+2+1, 2+1+2, 1+2+2, 3+1+1, 1+3+1, 1+1+3, 2+1+1+1, 1+2+1+1, 1+1+2+1, 1+1+1+2)…
- dp[i]=dp[i-1]+dp[i-2]+dp[i-3] 식을 도출할 수 있다.
👏 해결 완료!
참고
- [java] 백준 알고리즘 9095번 1,2,3 더하기 풀이 소스 https://zorba91.tistory.com/43