본문 바로가기
코딩테스트

[백준] 9095 1, 2, 3 더하기 - 자바(JAVA)

by 미소5 2023. 8. 10.

 

  • n을 1, 2, 3의 합으로 나타내는 경우의 수
    • 우선 1, 2, 3을 만들 수 있는 경우의 수는
    •  1 은 {1}로 1개
    • 2는 {1+1, 2}로 2개
    • 3은 {1+1+1, 1+2, 2+1, 3}으로 4개

 

  • 그렇다면 4는 어떻게 만들 수 있을까?  1, 2, 3의 각 경우의 수에 +3, +2, +1을 하면 4를 만들 수 있다! {1+3 / 2+2 / 3+1} 
    • 즉,  경우의 수는 1+2+47개

 

  • 5도 마찬가지로, 2, 3, 4의 각 경우의 수에 +3, +2, +1을 하면 5를 만들 수 있다! →{2+3 / 3+2/ 4+1}
    • 즉,  경우의 수는 2+4+713개

 

 

→이를 통해 점화식을 유추해보면 dp[n] = dp[n-3] + dp[n-2] + dp[n-1]

 

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int t=sc.nextInt();
		
		int dp[] = new int [11];
		
		dp[1] =1;
		dp[2]=2;
		dp[3]=4;
		
		for(int j=4;j<=10;j++) { 
			dp[j] = dp[j-3] + dp[j-2] + dp[j-1]; 
		}
		
		
		for(int i=0; i<t; i++) {
			int n=sc.nextInt();
			System.out.println(dp[n]);
		}
			
	}
}

 

  • 문제에서 정수 n은 양수이며 11보다 작다고했으므로
    • j는 4부터 10까지만 
728x90
반응형

'코딩테스트' 카테고리의 다른 글

[백준] 10808 알파벳 개수 - 자바(JAVA)  (0) 2023.08.09
[백준] 2563 색종이 -자바(JAVA)  (0) 2023.08.09
[백준][java] 3009 네 번째 점  (0) 2023.08.02
백준 10773 java  (0) 2023.07.09
백준 2908 java  (0) 2023.07.06