일단 시작해보는 블로그

[알고리즘_dp] 1,2,3 더하기 본문

CS/알고리즘 풀이

[알고리즘_dp] 1,2,3 더하기

Selina Park 2019. 8. 20. 13:48

생각해보기

 

d[1] = d[0]; //d[1] = 1
d[2] = d[2-1] + d[2-2]; //d[2] = 2
d[3] = d[3-1] + d[3-2] + d[3-3]; //4
d[4] = d[4-1] + d[4-2] + d[4-3]; //4+2+1
d[5] = d[5-1] + d[5-2] + d[5-3]; //7+4+2

 

 

전체 코드

package dp;

import java.util.Scanner;

public class backjoon_9095 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        int T = sc.nextInt();
        int n = 0;
        int[] d = new int[11]; //n은 양수이며 11보다 작다.

        d[0] = 1;
        d[1] = 1;
        d[2] = 2;
        d[3] = 4;

        for(int i=0; i<T; i++){
            n = sc.nextInt();
            for(int j=4; j<=n; j++){
                d[j] = d[j-1] + d[j-2] + d[j-3];
            }
            System.out.println(d[n]);
        }
    }
}

 

 

https://www.acmicpc.net/problem/9095

 

9095번: 1, 2, 3 더하기

문제 정수 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의 합으로 나타내는 방법의 수를 구하는 프로그램을 작성하시오. 입력 첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있고, 정수 n이 주어진다. n은 양수이며 11보다 작다. 출력 각

www.acmicpc.net

 

Comments