헝D의 일기장
article thumbnail

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

 

15989번: 1, 2, 3 더하기 4

정수 4를 1, 2, 3의 합으로 나타내는 방법은 총 4가지가 있다. 합을 나타낼 때는 수를 1개 이상 사용해야 한다. 합을 이루고 있는 수의 순서만 다른 것은 같은 것으로 친다. 1+1+1+1 2+1+1 (1+1+2, 1+2+1) 2+2

www.acmicpc.net

 

나의풀이

import java.util.*;
import java.io.*;
public class Main {
    public static void main(String args[]) throws Exception{
        BufferedReader br= new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw= new BufferedWriter(new OutputStreamWriter(System.out));
        int[][] arr=new int[10001][4];
        arr[1][1]=1; arr[1][2]=0; arr[1][3]=0;
        arr[2][1]=1; arr[2][2]=1; arr[2][3]=0;
        arr[3][1]=1; arr[3][2]=1; arr[3][3]=1;
        
        int t= Integer.parseInt(br.readLine());
        for(int n=4;n<10001; n++){
            
            arr[n][1]=arr[n-1][1];
            arr[n][2]=arr[n-2][1]+arr[n-2][2];
            arr[n][3]=arr[n-3][1]+arr[n-3][2]+arr[n-3][3];
        }
        for(int i=0;i<t;i++){
            int n=Integer.parseInt(br.readLine());
            bw.write(Integer.toString(arr[n][1]+arr[n][2]+arr[n][3])+"\n");
        }
        bw.flush();
        br.close();
        bw.close();
        
    }
}

 

참고한 사이트

https://suhyeokeee.tistory.com/24

 

[백준 15989] 1,2,3 더하기 4 -JAVA // le_effort//

이해하는데 정말 오래 걸렸다.... 한 시간 반은 걸린 거 같다.... 문제에서 주어진 것 처럼 중복을 없애야 한다. 일단 dp를 2차원 배열로 설정한다. - POINT A dp[n][1] 정수 n을 표현한 수 중 1로 끝나는

suhyeokeee.tistory.com

 

profile

헝D의 일기장

@헝D

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!