[λ°±μ€][JAVA] 9095λ² : 1, 2, 3 λνκΈ° ( *DP )
https://www.acmicpc.net/problem/9095
9095λ²: 1, 2, 3 λνκΈ°
κ° ν μ€νΈ μΌμ΄μ€λ§λ€, nμ 1, 2, 3μ ν©μΌλ‘ λνλ΄λ λ°©λ²μ μλ₯Ό μΆλ ₯νλ€.
www.acmicpc.net
μ΄ λ¬Έμ λ λ€μ΄λλ―Ή νλ‘κ·Έλλ°μ μ΄μ©νμ¬ ν μ μλ€.
dp 1μ°¨μ λ°°μ΄μ μμ±νκ³ , dp[n] λ μ μ nμ 1,2,3 μ ν©μΌλ‘ λνλΌ μ μλ κ²½μ°μ μλ₯Ό μλ―Ένλ€.
dp[1] μ 1λ‘λ§ λνλΌ μ μμΌλ―λ‘ 1κ°μ§μ΄λ€.
n = 1 μΌ λ,
1
ν κ°μ§μ΄λ―λ‘ dp[1] = 1 μ΄λ€.
n = 2 μΌ λ,
1 + 1
2
λ κ°μ§μ΄λ―λ‘ dp[2] = 2 μ΄λ€.
n = 3 μΌ λ,
1 + 1 + 1
2 + 1
1 + 2
3
μ΄ 4κ°μ§μ΄λ―λ‘ dp[3] = 4 μ΄λ€.
n = 4 μΌ λ,
1 + 1 + 1 +1
2 + 1 + 1
1 + 2 + 1
3 + 1
1 + 1 + 2
2 + 2
1 + 3
μ΄ 7κ°μ§μ΄λ―λ‘ dp[4] = 7 μ΄λ€.
κ·Έλ°λ° n = 4 μΈ κ²½μ°μ μμμ μλμ λΉ¨κ°μ λΆλΆμ μ°μ°μ dp[3]μ ν¬ν¨λ κ²½μ°μ μμ κ°λ€.
1 + 1 + 1 +1
2 + 1 + 1
1 + 2 + 1
3 + 1
μλμ νλμ λΆλΆμ μ°μ° μμ dp[2]μ ν¬ν¨λ κ²½μ°μ μμ λμΌνλ€.
1 + 1 + 2
2 + 2
μλμ μ΄λ‘μ λΆλΆμ μ°μ°μ dp[1]μ ν¬ν¨λ κ²½μ°μ μμ΄λ€.
1 + 3
μ¦, dp[4] λ κ²°κ΅ dp[3] + dp[2] + dp[1]μ λν κ²κ³Ό κ°λ€.μ¬κΈ°μ μ»μ μ μλ μ νμμ dp[n] = dp[n-1] + dp[n-2] + dp[n-1] μ΄ λλ€.μ νμμ μ»μμΌλ μ΄λ₯Ό μ΄μ©νμ¬ dpμ κ°λ€μ ꡬν μ μλ€.
import java.util.*;
import java.math.*;
public class Main {
static int dp[] = new int [11];
public static void main(String[] args) {
Scanner kb = new Scanner(System.in);
int t = kb.nextInt();
dp[1]=1; //μ΄κΈ° κ° μ΄κΈ°ν
dp[2]=2;
dp[3]=4;
for(int j=4;j<=10;j++) { // 4λΆν° λ°λ³΅
dp[j] = dp[j-3] + dp[j-2] + dp[j-1]; // μ νμ
}
for(int i=0;i<t;i++) {
int n = kb.nextInt();
System.out.println(dp[n]);
}
}
}