[백준 / 실버2] 15988 1, 2, 3 더하기 3 (Java)

wannabeking·2022년 9월 19일
0

코딩테스트

목록 보기
101/155

문제 보기



사용한 것

  • 점화식을 세워 풀이하기 위한 bottom-up


풀이 방법

  • n = 1 : {1}
  • n = 2 : {1, 1}, {2}
  • n = 3 : {1, 1, 1}, {2, 1}, {1, 2}, {3}
  • n = 4 :
    {1, 1, 1, 1}, {2, 1, 1}, {1, 2, 1}, {3, 1}, n = 3 에서 원소 1 추가
    {1, 1, 2}, {2, 2}, n = 2 에서 원소 2 추가
    {1, 3} n = 1 에서 원소 3 추가
  • 따라서 점화식은 dp[i] = dp[i - 1] + dp[i - 2] + dp[i - 3]


코드

public class Main {

    private static final int MOD = 1_000_000_009;

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int t = Integer.parseInt(br.readLine());
        for (int i = 0; i < t; i++) {
            int n = Integer.parseInt(br.readLine());

            long[] dp = new long[n + 1];
            dp[1] = 1;
            if (n >= 2) {
                dp[2] = 2;
            }
            if (n >= 3) {
                dp[3] = 4;
            }

            for (int j = 4; j <= n; j++) {
                dp[j] = (dp[j - 1] + dp[j - 2] + dp[j - 3]) % MOD;
            }

            System.out.println(dp[n]);
        }
    }
}


profile
내일은 개발왕 😎

0개의 댓글