본문 바로가기
알고리즘(코딩테스트)

백준 9095번 1, 2, 3 더하기(JAVA)

qbang 2022. 3. 1.

문제

 

9095번: 1, 2, 3 더하기

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

www.acmicpc.net

 

풀이

import java.io.*;

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[] ans = new int[11]; // 0 < n < 11

        ans[1] = 1;
        ans[2] = 2; // 1 + 1 or 2
        ans[3] = 4; // 1 + 1 + 1 or 1 + 2 or 2 + 1 or 3

        // 모든 n에 대해 계산을 한다.
        for (int i = 4; i < 11; i++) {
            // n = 4이면 (1을 만드는 방법) + 3, (2를 만드는 방법) + 2, (3을 만드는 방법) + 1 로 풀어낼 수 있다.
            // n = 5일 때 1, 2, 3을 제외한 숫자를 사용하지 않으므로 (1을 만드는 방법) + 4를 고려하지 않는다.
            ans[i] = ans[i - 1] + ans[i - 2] + ans[i - 3];
        }

        // 이미 계산을 완료하였으므로 n을 만드는 방법 수를 출력한다.
        for (int i = 0; i < T; i++) {
            int n = Integer.parseInt(br.readLine());
            bw.append(String.valueOf(ans[n]));
            bw.newLine();
        }

        bw.flush();
        bw.close();
        br.close();
    }
}

댓글