ALGORITHM/BOJ

[DP 연습] BOJ_9095 1,2,3 더하기 (S3)

lemon-scone 2021. 9. 21. 19:34

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

9095번: 1, 2, 3 더하기

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

www.acmicpc.net


그래도 이건 저번 스터디에서 발표한 경험이 있어서 아직 기억이 남아가지고 쉽게 풀 수 있었다!
같은 DP문제여도 기존 항을 활용해서 문제푸는 것 같은 보다 가시적인 이런 문제들은 이해가 조금이라도 가지만, 전에 풀었던 1만들기 문제같은 유형은 아직까지 잘 이해가 안되는 것으로 보아 DP 공부의 길은 참 멀기도 먼데 험한 것 같다.

package algo0919;

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

// 1,2,3 더하기
public class BOJ_9095 {
	
	public static void main(String[] args) throws NumberFormatException, IOException {
		
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringBuilder sb = new StringBuilder();
		
		int TC = Integer.parseInt(br.readLine());
		
		for (int tc = 1; tc <= TC; tc++) {
			
			int N = Integer.parseInt(br.readLine());
			int[] memo = new int[N+1];
			
			memo[0] = 0;
			memo[1] = 1;
			memo[2] = 2;
			memo[3] = 4;
			
			for (int i = 4; i < memo.length; i++) {
				memo[i] = memo[i-1] + memo[i-2] + memo[i-3];
			}
			sb.append(memo[N]).append("\n");
		}
		System.out.println(sb.toString());
	}
}