Algorithm/Beakjoon

[JAVA] 백준 1904번_01타일

mopipi 2023. 12. 9. 15:32
반응형

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

 

1904번: 01타일

지원이에게 2진 수열을 가르쳐 주기 위해, 지원이 아버지는 그에게 타일들을 선물해주셨다. 그리고 이 각각의 타일들은 0 또는 1이 쓰여 있는 낱장의 타일들이다. 어느 날 짓궂은 동주가 지원이

www.acmicpc.net


import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int N = sc.nextInt();
        int[] dp = new int[N + 1];
        dp[0] = 1; dp[1] = 1;
        if(N >= 2) {
            for (int i = 2; i <= N; i++) {
                dp[i] = (dp[i - 1] + dp[i - 2]) % 15746;
            }
        }
        System.out.println(dp[N]);
    }
}
  • BottomUp 방식으로 규칙 발견
    • N(1) : 1
    • N(2) : 00, 11 
    • N(3) : 100(1+00), 001(00+1), 111(11+1) 
    • N(4) : 0000, 1100 (→ N(2)), 1001, 0011, 1111 (→ N(3))
즉, 가용할 수 있는 숫자는 길이가 1인 1, 길이가 2인 00이 존재 
  → 1은 길이가 k-1인 dp[k-1]만큼 사용하고, 00은 길이가 k-2인 dp[k-2]만큼 사용
  → dp[k] = dp[k-1] + dp[k-2] (k > 2)

 

반응형