티스토리 뷰

728x90

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

 

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

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

programmers.co.kr

 

  • 해설 :

자연수 n이 주어질 때, 세로의 길이가 2이고 가로의 길이가 n인 공간에 2x1 또는 1x2 모양의 타일을 가득 채우려고 한다. 이 때 채울 수 있는 가짓수를 출력하면 된다.

 

 

 

  • 풀이 :

DP문제이다. 종이에 그림을 그려가며 가짓수를 체크해 보았는데 n이 5정도 되었을 때 규칙이 보였다. n이 1씩 증가하면 n-1을 채우는 경우와 n-2를 채우는 경우가 합쳐지는 식으로 진행되어 초기값만 지정해준 후 n-1과 n-2의 값을 더해주었다.

 

 

 

 

1
2
3
4
5
6
7
def solution(n):
    dp = [0]*(n+1)
    dp[1= 1
    dp[2= 2
    for i in range(3,n+1):
        dp[i] = (dp[i-1+ dp[i-2])%1000000007
    return dp[n]
cs
320x100
댓글
© 2022 WonSeok, All rights reserved