Bleeding edge

[프로그래머스] 2 x n 타일링 -자바스크립트 본문

코딩테스트 공부

[프로그래머스] 2 x n 타일링 -자바스크립트

codevil 2022. 6. 2. 02:10

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

 

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

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

programmers.co.kr

오늘 풀어본 문제중에 1과 2의 합을 이용하여 n을 구하는 문제들을 많이 풀었다. 

멀리 뛰기 문제 :

예를들면, n = 4 인경우

1 1 1 1

1 1 2(1 2 1, 2 1 1)

2 2

와같이 1을 4개, 1 2개, 2 1개, 2를 2개 구한뒤 nCr에 대입을 하여 풀려고하니 시간초과가 나왔다.. 근데 문제 해설을 보니 피보나치로 풀이한 문제가 있었는데,

이 문제 역시 전혀 다른 문제가 아니었다.  그래서 피보나치로 접근을 하고, 이 값들을 list에 저장하여 문제를 풀이하였다.

function solution(n) {
    let list = [1,2]
    while(list.length!==n){
        const last = list.length-1
        list.push((list[last]+list[last-1])%1000000007)
    }
    return list[list.length-1]
}

조합의 합을 이용항 풀이에는, 피보나치가 수반된다!라고 생각을 해보고 문제를 풀어봐야겠다.