ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • boj)15590 - 1, 2, 3 더하기 5
    PS/boj 2020. 9. 17. 14:13
    import java.util.*;
    
    public class boj_15990 {
        static final long mod = 1000000009L;
        static final int limit = 100000;
        static long[][] d = new long[limit+1][4];
        
        public static void main(String args[]) {
            Scanner sc = new Scanner(System.in);
            for (int i=1; i<=limit; i++) {
                if (i-1 >= 0) {
                    d[i][1] = d[i-1][2] + d[i-1][3];
                    if (i == 1) {
                        d[i][1] = 1;
                    }
                }
                if (i-2 >= 0) {
                    d[i][2] = d[i-2][1] + d[i-2][3];
                    if (i == 2) {
                        d[i][2] = 1;
                    }
                }
                if (i-3 >= 0) {
                    d[i][3] = d[i-3][1] + d[i-3][2];
                    if (i == 3) {
                        d[i][3] = 1;
                    }
                }
                d[i][1] %= mod;
                d[i][2] %= mod;
                d[i][3] %= mod;
            }
            
            int t = sc.nextInt();
            while (t-- > 0) {
                int n = sc.nextInt();
                System.out.println((d[n][1] + d[n][2] + d[n][3])%mod);
            }
        }
    }

    - 생각이 안난다 ....

    - 머리가 굳은거같다 ....

     

    - 합의 마지막에 올 수 있는 수는 1, 2, 3이 있다.

    - 마지막에 1 올 경우 그 앞은 2, 3 -> dp[i][1] = dp[i-1][2] + dp[i-1][3];

    - 마지막에 2 올 경우 그 앞은 1, 3 -> dp[i][2] = dp[i-2][1] + dp[i-2][3];

    - 마지막에 3 올 경우 그 앞은 2, 3 -> dp[i][3] = dp[i-3][2] + dp[i-3][3];

     

    - 이중배열로 dp를 담는다.

     

    'PS > boj' 카테고리의 다른 글

    boj)2193 - 이친수  (0) 2020.09.17
    boj)10844 - 쉬운 계단 수  (0) 2020.09.17
    boj)16194 - 카드 구매하기 2  (0) 2020.09.17
    boj)11052 - 카드 구매하기  (0) 2020.09.17
    boj)9095 - 1, 2, 3 더하기  (0) 2020.09.16
킹수빈닷컴