https://www.acmicpc.net/problem/9095
<풀이>
DP 문제 ( 상향식 기법 활용)
* 1 = 1
* -------------------> 1
*
* 2 = 2
* = 1 + 1
* -------------------> 2
*
* 3 = 3
* = 2 + 1
* = 1 + 2
* = 1 + 1 + 1
* -------------------> 4
*
* 4 = 3 + (1)->1
* = 2 + (2)->2
* = 1 + (3)->4
* -------------------> 7
*
* 5 = 3 + (2)->2
* = 2 + (3)->4
* = 1 + (4)->7
* -------------------> 13
*
* => a(n) = a(n-1) + a(n-2) + a(n-3)
package DP;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main_9095_DP {
static int[] d = new int[12];
public static void main(String[] args) throws NumberFormatException, IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int TC = Integer.parseInt(br.readLine());
d[1]=1;
d[2]=2;
d[3]=4;
for (int i = 4; i <= 11; i++) {
if(d[i]==0) {
d[i] = d[i-1] + d[i-2]+ d[i-3];
}
}
for (int tc = 0; tc < TC; tc++) {
int N = Integer.parseInt(br.readLine());
System.out.println(d[N]);
} // TC end
}
}
'공부 > 알고리즘' 카테고리의 다른 글
[프로그래머스]43162_네트워크_JAVA 풀이_DFS (0) | 2022.11.30 |
---|---|
[프로그래머스]주차 요금 계산_JAVA (0) | 2022.06.05 |
[정올]1681_해밀턴 순환회로_Java_ DFS + 백트래킹 (0) | 2022.02.25 |
[백준]2563_색종이_Java 풀이 (0) | 2022.02.11 |
[백준]4963_섬의 개수_Java 풀이 (0) | 2022.02.09 |
댓글