YeJin's Footsteps

2 x n 타일링 본문

Computer Science & Engineering/알고리즘

2 x n 타일링

YeJinii 2021. 7. 31. 00:43

문제 링크

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

 

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

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

programmers.co.kr

 

문제 풀이 코드

#include <string>
#include <vector>

using namespace std;

const int MN=60001;
int dp[MN];

int solution(int n) {
    int answer = 0;
    dp[0]=0; dp[1]=1; dp[2]=2;
    for(int i=3; i<=n; i++){
        dp[i]=(dp[i-1]+dp[i-2])%1000000007;
    }
    answer=dp[n];
    return answer;
}

백준에서 똑같은 문제를 한번 풀어봐서 쉽게 풀 수 있었다.

손으로 경우의 수를 다 따져서 그려보면 피보나치 수임을 알 수 있다.

재귀함수가 아닌 dp방식으로 문제를 풀었다.

'Computer Science & Engineering > 알고리즘' 카테고리의 다른 글

1890번: 점프  (0) 2021.08.06
2407번: 조합  (0) 2021.08.06
문자열 압축  (0) 2021.07.30
로또의 최고 순위와 최저 순위  (0) 2021.07.30
9370번: 미확인 도착지  (0) 2021.07.21
Comments