백준 1, 2, 3 더하기

KIMYEONGJUN·4일 전
0
post-thumbnail

문제

내가 생각했을때 문제에서 원하는부분

첫째 줄에 테스트 케이스의 개수 T가 주어진다.
각 테스트 케이스는 한 줄로 이루어져 있고, 정수 n이 주어진다. n은 양수이며 11보다 작다.

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

내가 이 문제를 보고 생각해본 부분

BufferedReader를 사용하여 표준 입력을 받는다.
크기가 11인 정수형 배열 dp를 선언한다.
이는 인덱스 0부터 10까지 사용하여 각 숫자를 만드는 방법의 수를 저장하기 위함이다.
dp[0], dp[1], dp[2], dp[3]에 대한 기본값을 설정한다.
dp[0] = 1은 점화식을 적용하기 위한 기술적인 기본값이다.
for 루프를 사용하여 i가 4부터 10까지 증가하면서 dp[i] = dp[i-1] + dp[i-2] + dp[i-3] 점화식을 적용하여 dp 배열의 나머지 값을 계산한다.
테스트 케이스의 개수 T를 읽는다.
또 다른 for 루프를 T만큼 반복하여 각 테스트 케이스를 처리해준다.
각 테스트 케이스에서는 정수 n을 읽고, 미리 계산해둔 dp[n] 값을 출력한다.
마지막으로 BufferedReader를 닫아 자원을 해제한다.

코드로 구현

package baekjoon.baekjoon_28;

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

// 백준 9095번 문제
public class Main1017 {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        // n은 10보다 작으므로, 10까지의 DP 값을 미리 계산합니다.
        // 배열 크기를 11로 설정하여 인덱스 0부터 10까지 사용합니다.
        int[] dp = new int[11];

        // 기본값(Base Case) 설정
        dp[0] = 1; // DP 점화식을 위한 설정
        dp[1] = 1; // 1을 만드는 방법: 1
        dp[2] = 2; // 2를 만드는 방법: 1+1, 2
        dp[3] = 4; // 3을 만드는 방법: 1+1+1, 1+2, 2+1, 3

        // 점화식을 이용하여 4부터 10까지의 DP 값 계산
        for(int i = 4; i <= 10; i++) {
            dp[i] = dp[i - 1] + dp[i - 2] + dp[i - 3];
        }

        int T = Integer.parseInt(br.readLine()); // 테스트 케이스 개수 읽기

        // 각 테스트 케이스 처리
        for(int i = 0; i < T; i++) {
            int n = Integer.parseInt(br.readLine()); // 정수 n 읽기
            System.out.println(dp[n]); // 미리 계산된 dp[n] 값 출력
        }

        br.close(); // BufferedReader 닫기
    }
}

마무리

코드와 설명이 부족할수 있습니다. 코드를 보시고 문제가 있거나 코드 개선이 필요한 부분이 있다면 댓글로 말해주시면 감사한 마음으로 참고해 코드를 수정 하겠습니다.

profile
Junior backend developer

0개의 댓글