알고리즘||코딩테스트/백준

[백준 9095번] 1,2,3 더하기 - JAVA

째로스 2023. 7. 29. 17:48

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

 

9095번: 1, 2, 3 더하기

각 테스트 케이스마다, n을 1, 2, 3의 합으로 나타내는 방법의 수를 출력한다.

www.acmicpc.net

풀이

사용한 알고리즘: 다이나믹 프로그래밍

 

풀이전략

아래의 표는 n 입력에 따라 합으로 나타낼 수 있는 경우의 수들을 나타낸다.

빨간선을 기준으로 

첫번째 문단은 1 + [이전의 경우의수]

두번째 문단은 2 + [2번째 전의 경우의수]

세번째 문단은 3 + [3번째 전의 경우의수]

가 출력되는 것을 확인할 수 있다.

 

따라서 d[i]를 i 입력 시 합으로 나타낼 수 있는 수의 개수라고 할 때

d[i]=d[i-1]+d[i-2]+d[i-3]  라는 식이 도출된다.

 

제출코드

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

public class Main {
    public static void main(String args[]) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int T=Integer.parseInt(br.readLine());

        int d[]=new int[11];
        d[1]=1;
        d[2]=2;
        d[3]=4;
        for(int i=4;i<11;++i){
            d[i]=d[i-1]+d[i-2]+d[i-3];
        }

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