Geisha 2024. 7. 20. 23:52

 

코드 흐름

  • 코드 흐름이랄것도 없이 사실 너무나도 많이 만났던 문제이다. DP, 즉 동적계획법을 사용하여야 하는 풀이임을 이미 진작에 알고 있었고
  • 0일때, 1일때, 2일때, 3일때 가능한 경우의 수만 잘 생각해본다면 사실 규칙을 발견할 수 있다. 
  • 아래 코드에 규칙이 담겨져 있다. arr[i]=(arr[i-1]+arr[i-2]) 이부분이다.
package Programmers;

class p2xn타일링 {
    public int solution(int n) {
        int[] arr = new int[n+1];
        if(n <= 3)
            return n;
        for(int i = 0 ; i <= n ;i++)
        {
            if(i<=3){
                arr[i] = i;
                continue;
            }
            arr[i]=(arr[i-1]+arr[i-2])%1000000007;
        }
        return arr[n];
    }
}