알고리즘 연습/동적 계획법
[Lv.2 / 프로그래머스 / 파이썬] 2 x n 타일링
김세진
2024. 6. 6. 00:18
반응형
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
풀이
2 x n 의 공간이 주어질 때 2 x 1 의 타일을 놓는 경우의 수를 구해야 하는 동적 계획법 문제이다.
n이 1 증가할 때 타일을 놓는 방법은 다음과 같다.
- dp[n]일 때의 경우에 세로로 타일을 놓는다
- 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]
반응형