알고리즘 연습/동적 계획법

[Lv.2 / 프로그래머스 / 파이썬] 2 x n 타일링

김세진 2024. 6. 6. 00:18
반응형

 

 

 

 

 

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

 

 

풀이

 

2 x n 의 공간이 주어질 때 2 x 1 의 타일을 놓는 경우의 수를 구해야 하는 동적 계획법 문제이다.

n이 1 증가할 때 타일을 놓는 방법은 다음과 같다.

 

  1. dp[n]일 때의 경우에 세로로 타일을 놓는다
  2. dp[n-1]의 경우에 가로로 2칸짜리 타일을 놓는다

 

따라서 점화식은 dp[n] = dp[-1] + dp[-2] 이다.

 

def solution(n):
    dp = [0, 1, 2]
    for i in range(n - len(dp) + 1):
        dp.append((dp[-1] + dp[-2]) % 1000000007)
    return dp[n]

 

 

 

 

반응형