[프로그래머스] 2 x n 타일링(Python)
문제
문제 해설
정상적으로 타일을 배치하려면 마지막에 반드시 ㅣ 혹은 = 가 들어와야 합니다.
n = 4인 경우를 예시로 들면 다음과 같이 ㅣ 블럭으로 끝나면 빨간색, =블럭으로 끝나면 파란색으로 나누었습니다.
각 경우는 n=3인 모든 경우에 빨간 블럭을 더한 것
+ n=2인 모든 경우에 파란 블럭을 더한 것
의 총 개수이므로
A(n) = A(n-1) + A(n-2) 단, n >=3
의 점화식을 세울 수 있습니다.
그리고 한 가지 유의할 점은 n이 커질 수록 저장되는 값이 매우 커지기 때문에 1000000007
으로 나눈 값들을 저장해야 한다는 것입니다.
모듈러 연산의 특성상 원래 두 값을 더하고 나누어도, 나머지들을 더한 뒤 나누어도 같은 값을 가지기 때문입니다.
(a + b) mod n = ((a mod n) + (b mod n)) mod n
풀이 코드
def solution(n):
dp = [1] * (n + 1)
for i in range(2, n + 1):
dp[i] = (dp[i - 1] + dp[i - 2]) % 1000000007
return dp[i]
Author And Source
이 문제에 관하여([프로그래머스] 2 x n 타일링(Python)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@qweadzs/프로그래머스-2-x-n-타일링Python저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)