프로그래머스 코딩테스트 연습/Level3

[프로그래머스][JAVA] 2 x n 타일링

긷뚜 2021. 5. 5. 13:09
728x90

programmers.co.kr/learn/courses/30/lessons/12900

[

코딩테스트 연습 - 2 x n 타일링

가로 길이가 2이고 세로의 길이가 1인 직사각형모양의 타일이 있습니다. 이 직사각형 타일을 이용하여 세로의 길이가 2이고 가로의 길이가 n인 바닥을 가득 채우려고 합니다. 타일을 채울 때는

programmers.co.kr

](https://programmers.co.kr/learn/courses/30/lessons/12900)

처음에는 동적계획법을 이용해 풀고자 했으나 시간초과가 떠벼렸다

그 후 규칙성을 찾아보고자 고민한 결과 n에따른 피보나치 수열이 결정됨을 알아냈다

아래를 확인해보자

n = 0 일경우의 타일배치의 경우의 수는 0

n = 1 일경우의 타일배치의 경우의 수는 1

n = 2 일경우의 타일배치의 경우의 수는 2

n = 3 일경우의 타일배치의 경우의 수는 3

n = 4 일경우의 타일배치의 경우의 수는 5

n = 5 일경우의 타일배치의 경우의 수는 8

class Solution {

    public int solution(int n) {
        if(n<=1){return n;}
        int[] fibo = new int[n+2];
        fibo[0] = 0;
        fibo[1] = 1;
        for(int i =2;i<n+2;i++){
            fibo[i] = (fibo[i-1] + fibo[i-2])%1000000007;
        }

        return fibo[n+1]%1000000007;
    }



}
728x90