아이데이션
앞서 풀었던 2xn 타일링 문제에서 조건 하나가 추가된 버전이다.
앞선 문제와 마찬가지로 다이나믹 프로그래밍을 이용하여 풀었다
다만, 2x2 타일이 추가 되었기 때문에 해당 조건을 고려해주기 위하여,
1. n - 1까지 쌓은 상태에서 2x1 타일을 하나 쌓기
2. n - 2까지 쌓은 상태에서 2x1 타일을 두개 쌓기
의 2번 조건을 다음과 같이 수정하였다.
2-1. n - 2까지 쌓은 상태에서 2x1 타일을 두개 쌓기
2-2. n - 2까지 쌓은 상태에서 2x2 타일을 두개 쌓기
2의 갈래가 두가지로 나눠졌기 때문에 cache[i - 2] * 2를 해주었다.
풀이
n = int(input())
cache = [1] * (n + 1)
for i in range(2, n + 1, 1):
cache[i] = cache[i - 1] + cache[i - 2] * 2
print(cache[n] % 10007)
'Study > 알고리즘 & 자료구조' 카테고리의 다른 글
[백준] 10844 - 쉬운 계단수 (0) | 2024.08.19 |
---|---|
[백준] 9095 - 1, 2, 3 더하기 (0) | 2024.08.15 |
[백준] 11726 - 2xn 타일링 (0) | 2024.08.12 |
[백준] 1463 - 1로 만들기 (0) | 2024.08.11 |
[프로그래머스] 2019 카카오 겨울 개발 인턴십 - 튜플 (0) | 2023.04.04 |