Coding 01

백준[9095]번 : 1, 2, 3 더하기 ( JAVA ) 본문

백준

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

하루우울루 2023. 8. 11. 18:47

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

 

9095번: 1, 2, 3 더하기

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

www.acmicpc.net


Code

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.LinkedList;
import java.util.Queue;
import java.util.Stack;
import java.util.StringTokenizer;

public class Main {
	static int[] dp = new int[12];
	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()); // 테스트 케이스
		
		dp[1] = 1;
		dp[2] = 2;
		dp[3] = 4;
		
		for(int i=4;i<11;i++) { DP값 저장
			DP(i);
		}
		
		while(t-- > 0) {
			int n = Integer.parseInt(br.readLine());
			
			int result = DP(n);
			
			bw.write(result+"\n");
		}
		
		br.close();
		bw.close();
		
	}
	
	static int DP(int n) { // DP값 
		
		if(n == 1) {
			return dp[1];
		}
		else if(n == 2) {
			return dp[2];
		}
		else if(n == 3) {
			return dp[3];
		}
		else {
			return dp[n] = dp[n-1] + dp[n-2] + dp[n-3];
		}
	}
}

 

처음에

1 -> 1

2 -> 1

3 -> 3

4 -> 7 

로 생각을 해서 문제가 이상하다 싶었다.

알고 보니 2에서는 2를 빼먹고 3에서는 3을 빼먹었다.

 

배열에 값을 저장해 두고 원하는 값을 뽑아서 출력하는 방식으로 풀었다.