Algorithm/acmicpc.net

다이나믹 프로그래밍3

winney916 2021. 12. 10. 10:43
728x90

#11727 또 다시 타일링 https://www.acmicpc.net/problem/11727

 

11727번: 2×n 타일링 2

2×n 직사각형을 1×2, 2×1과 2×2 타일로 채우는 방법의 수를 구하는 프로그램을 작성하시오. 아래 그림은 2×17 직사각형을 채운 한가지 예이다.

www.acmicpc.net

이번 문제의 점화식은 내 힘으로 찾았다. (노가다)

 

팁? 이라 하면, An 을 An-1과 An-2등 이 전의 값으로 조합하여 찾는게 팁이 될 수 있을지도 모르겠다.

 

그렇게 제출 했는데 또 자꾸 틀려서 많이 화가 났다.

자꾸 출력 형식을 무시하고 제출해서 그런거였다. 그렇게 세 번을 틀렸다.

병X.... 어제도 그러더니... 

실수가 반복되면 실력이랬다.

 

 

엥 근데 또 틀렸다 (100%에서)

 

뭐지?.....

 

했더니

리스트를 출력할 때 -1번 인덱스를 출력하게 해놨었다.

N = int(input())

dp = [0, 1, 3] + [0]*(N-2)

for i in range(3, N+1):
    dp[i] = dp[i-1] + dp[i-2]*2

print(dp[-1] % 10007)

리스트의 길이는 기본 3이 넘는다.

그러니까 값으로 1이 입력될 때 에러가 난다.

 

100%에서 틀리면 너무 화내지 말자. 내 경험상 0 또는 1 과 같은 제일 작은 입력값을 제대로 처리하지 않아 발생하는 에러였으니까...

 

N = int(input())

dp = [0, 1, 3] + [0]*(N-2) if N > 2 else [0, 1, 3]

for i in range(3, N+1):
    dp[i] = dp[i-1] + dp[i-2]*2

print(dp[N] % 10007)

언제쯤 똑똑해질래 ...? (리스트 조건문은 불안해서 넣었다.. ㅎㅎ;;;

'Algorithm > acmicpc.net' 카테고리의 다른 글

다이나믹 프로그래밍5  (0) 2021.12.14
다이나믹 프로그래밍4  (0) 2021.12.13
다이나믹 프로그래밍2  (0) 2021.12.09
다이나믹 프로그래밍 (Dynamic Programming)  (0) 2021.12.08
진수 계산법  (0) 2021.12.04