출처 : 백준, https://www.acmicpc.net/problem/11726
11726번: 2×n 타일링
2×n 크기의 직사각형을 1×2, 2×1 타일로 채우는 방법의 수를 구하는 프로그램을 작성하시오. 아래 그림은 2×5 크기의 직사각형을 채운 한 가지 방법의 예이다.
www.acmicpc.net
더보기
첫 번째 풀이 : 실패
if __name__ == '__main__':
n = int(input())
count_arr = [0] * (n+1)
count_arr[1] = 1
count_arr[2] = 2
for i in range(3, n+1):
count_arr[i] = count_arr[i-1] + count_arr[i-2]
print(count_arr[n] % 10007)
runtime 에러가 나길래 뭔가 했더니만 1일 때 예외처리 안해줬더라.
두 번째 풀이 : 성공
if __name__ == '__main__':
n = int(input())
count_arr = [0] * (n+1)
count_arr[1] = 1
try:
count_arr[2] = 2
except:
pass
for i in range(3, n+1):
count_arr[i] = count_arr[i-1] + count_arr[i-2]
print(count_arr[n] % 10007)
그냥 뭔가 엄청난 발견이 있는건 아니고.....
2x5까지 해보니까 count[i]= count[i-2] + count[i-1] (i>2), count[1] = 1, count[2] = 2더라......
점화식으로 표현할 수 있으니까 DP........
시간 복잡도
-
다른 사람의 풀이를 보면서 알게 된 점
-
고찰
-
'알고리즘 > Python' 카테고리의 다른 글
[python] 백준 3085 - 사탕 게임 (0) | 2022.03.22 |
---|---|
[python] 백준 9095 - 1, 2, 3 더하기 (0) | 2022.03.22 |
[python] 백준 9655 - 돌 게임 (0) | 2022.03.19 |
[python] 백준 14719 - 빗물 (0) | 2022.03.19 |
[python] 백준 2504 - 괄호의 값 (0) | 2022.03.19 |