[λ°±μ€][JAVA] - 1, 2, 3 λνκΈ°(9095)
λ¬Έμ μκ°
π₯ λ¬Έμ λ 벨 : μ€λ²3
π λ¬Έμ μ ν : λ€μ΄λλ―Ή νλ‘κ·Έλλ°
π¬ νμ΄ μΈμ΄ : JAVA
β±οΈ νμ΄ μκ° : 30λΆ
ποΈ λ¬Έμ λ§ν¬ : λ°±μ€ λ¬Έμ λ§ν¬
π λ¬Έμ
μ μ 4λ₯Ό 1, 2, 3μ ν©μΌλ‘ λνλ΄λ λ°©λ²μ μ΄ 7κ°μ§κ° μλ€. ν©μ λνλΌ λλ μλ₯Ό 1κ° μ΄μ μ¬μ©ν΄μΌ νλ€.
1+1+1+1
1+1+2
1+2+1
2+1+1
2+2
1+3
3+1
μ μ nμ΄ μ£Όμ΄μ‘μ λ, nμ 1, 2, 3μ ν©μΌλ‘ λνλ΄λ λ°©λ²μ μλ₯Ό ꡬνλ νλ‘κ·Έλ¨μ μμ±νμμ€.
π€ λ¬Έμ λΆμ
λ¬Έμ μμ μΈκΈν κ²κ³Ό κ°μ΄ 1, 2, 3λ§μ μ¬μ©ν΄μ κ°μ ννν μ μλ κ²½μ°μ μλ₯Ό ꡬν΄μΌ νλ€.
0λΆν° 3κΉμ§ κ°κ° μ¬μ©ν μ μλ κ²½μ°μ μλ₯Ό νμΈν΄λ³΄λ©΄ μλμ κ°λ€.
κ΅¬λΆ | κ²½μ°μ μ | μ‘°ν© |
---|---|---|
1 | 1κ° | 1 |
2 | 2κ° | 1 + 1 / 2 |
3 | 4κ° | 1 + 1 + 1 / 1 + 2 / 2 + 1 / 3 |
1, 2, 3μ μ΄μ©ν΄ 4
λ₯Ό λ§λ€ μ μλ κ²½μ°μ μλ₯Ό 보면 μλμ κ°λ€.
- 1μ μ΄μ©ν μ‘°ν© : 1κ°
- 2μ μ΄μ©ν μ‘°ν© : 2κ°
- 3μ μ΄μ©ν μ‘°ν© : 4κ°
4 + 2 + 1
λ‘ μ΄ 7κ°μ κ²½μ°μ μλ‘ κ΅¬ν μ μλ€.
5μ κ²½μ°λ₯Ό 보면 μλλ‘ λλ μ μλ€.
- 2μ μ΄μ©ν μ‘°ν© : 2κ°
- 3μ μ΄μ©ν μ‘°ν© : 4κ°
- 4λ₯Ό μ΄μ©ν μ‘°ν© : 7κ°
μ¦, (n - 3) + (n - 2) + (n - 1)
μ ν΅ν΄ κ°μ ꡬν μ μλ€.
1, 2, 3μ λν κ°μ΄ νμνλ―λ‘ λ―Έλ¦¬ κ°μ λ©λͺ¨μ μ΄μ (memoization)μ ν λ€, νμ΄ν΄μΌ νλ€.
π μ΅μ’ μ½λ
λ©λͺ¨λ¦¬ : 11480 KB
μκ° : 76 ms
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int T = Integer.parseInt(br.readLine());
int[] dp;
while (T-- > 0) {
int n = Integer.parseInt(br.readLine());
// nμ κ°μ 11 λ―Έλ§μ΄λΌκ³ λμ΄μκΈ° λλ¬Έμ 11λ‘ μ΄κΈ°ν
dp = new int[11];
dp[0] = 0;
dp[1] = 1;
dp[2] = 2;
dp[3] = 4;
for (int i = 4; i <= n; i++) {
dp[i] = dp[i - 1] + dp[i - 2] + dp[i - 3];
}
bw.append(dp[n] + "\n");
}
bw.flush();
bw.close();
br.close();
}
}