boj)9095 - 1, 2, 3 더하기

2020. 9. 16. 18:56PS/boj

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

// # 1, 2, 3 더하기
public class boj_9095 {
    static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    static int[] dp = new int[11];

    public static void main(String[] args) throws IOException {
        int t = Integer.parseInt(br.readLine());
        dp[1] = 1; dp[2] = 2; dp[3] = 4;

        for (int i = 4; i <= 10; i++) {
            dp[i] = dp[i-1] + dp[i-2] + dp[i-3];
        }

        for (int i = 0; i < t; i++) {
            int n = Integer.parseInt(br.readLine());
            System.out.println(dp[n]);
        }
    }
}

- dp는 쪼개고 점화식 ! 

 

- n을 1, 2, 3을 더해서 만드는 방법의 수

- x + x + x + .... ? = n -> 여기서 ? 자리에 올 수 있는 수는 1, 2,3 밖에 없다.

- 1이 왔을 경우 dp[n-1]

- 2가 왔을 경우 dp[n-2]

- 3이 왔을 경우 dp[n-3]

 

- ex 4

- 마지막이 1이 라는 것은 3을 만드는 경우의 수에 마지막에 1을 붙인것과 같음 -> dp[3]

- 마지막이 2라는 것은 2를 만드는 경우의 수에 마지막에 2를 붙인것과 같음 -> dp[2]

- 3이라는 것은 1을 만드는 경우의 수에 마지막에 3을 붙인것과 같음 -> dp[1]

 

- dp[n] = dp[n-1] + dp[n-2] + dp[n-3]

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
import java.io.*;
 
public class boj_9095 {
    static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
 
    public static void main(String[] args) throws IOException {
        int t = Integer.parseInt(br.readLine());
        for (int i = 0; i < t; i++) {
            int k = Integer.parseInt(br.readLine());
            System.out.println(go(0, k));
        }
    }
 
    static int go(int sum, int goal) {
        if (sum > goal) return 0;
        if (sum == goal) return 1;
        int now = 0;
        for (int i = 1; i <= 3; i++) {
            now += go(sum + i, goal);
        }
        return now;
    }
}
 
cs

 

- 20.12.01 추가

- 재귀

 

- 재귀를 이용해서 다시 풀이

 

 

 

 


www.acmicpc.net/problem/9095

'PS > boj' 카테고리의 다른 글

boj)16194 - 카드 구매하기 2  (0) 2020.09.17
boj)11052 - 카드 구매하기  (0) 2020.09.17
boj)11727 - 2xn 타일링 2  (0) 2020.09.16
boj)11726 - 2xn 타일링  (0) 2020.09.16
boj)1463 - 1로 만들기  (0) 2020.09.16