728x90
<정답>
import java.io.*;
class Main{
public static void main(String args[]) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(br.readLine());
int[] dp = new int[11];
StringBuilder sb = new StringBuilder();
dp[1] = 1;
dp[2] = 2;
dp[3] = 4;
for(int i=0; i<n; i++){
int x = Integer.parseInt(br.readLine());
for(int j=3; j<x+1; j++){
if(dp[j]>0) continue;
dp[j] = dp[j-3] + dp[j-2] + dp[j-1];
}
sb.append(dp[x]).append("\n");
}
System.out.print(sb);
}
}
1. 테이블 정의
dp[i] = i를 1,2,3으로 나타내는 방법의 수
2. 점화식 찾기 : 앞 3개 더하기
[1] 1
[2] 2
[3] 4
[4] 7
1111
112
22
13
[5] 13
1+1+1+1+1 >1
1+1+1+2 > 4
1+1+3 > 3
1+2+2 > 3
2+3 > 2
[6] 24
1+1+1+1+1+1 >1
1+1+1+1+2 > 5
1+1+1+3 > 4
1+1+2+2 > 6
1+2+3 > 6
3+3 > 1
2+2+2 >1
[7] 44
1+1+1+1+1+1+1 >1
1+1+1+1+1+2 >6
1+1+1+1+3 >5
1+1+1+2+2 >10
1+1+2+3 >12
1+2+2+2 >4
1+3+3 >3
2+2+3 > 3
3.초깃값: 1,2,3
그래도 dp 문제 좀 풀다보니까 약간 감이 온다.
근데 vs code에서 돌리니까 Build fail 뜨는데 왜그러는거지?
반응형
'알고리즘 > 백준' 카테고리의 다른 글
[백준 / 리스트] 25966 : 배찬우는 배열을 좋아해 (python) (0) | 2024.03.14 |
---|---|
[백준 / 누적 합] 11659 : 구간 합 구하기 4 (python) (0) | 2024.02.20 |
[백준 / DP] 1463 : 1로 만들기 (Java) (0) | 2023.09.06 |
[백준 / DP] 11727 : 2 x n 타일링 2 (Java) (0) | 2023.09.05 |
[백준 / DP] 11726 : 2 x n 타일링 (Java) (0) | 2023.09.05 |