알고리즘/백준

백준 1904: 01타일 (Python)

sssbin 2022. 3. 29. 17:07

 

https://www.acmicpc.net/problem/1904

 

1904번: 01타일

지원이에게 2진 수열을 가르쳐 주기 위해, 지원이 아버지는 그에게 타일들을 선물해주셨다. 그리고 이 각각의 타일들은 0 또는 1이 쓰여 있는 낱장의 타일들이다. 어느 날 짓궂은 동주가 지원이

www.acmicpc.net

 

 

피보나치 수열이랑 똑같은 간단한 문제였다

그러나...

 

첫 번째 코드 - 메모리 초과

n = int(input())

d = [0] * (n + 1)
d[1] = 1
d[2] = 2

for i in range(3, n+1):
    d[i] = d[i-1] + d[i-2]

print(d[n] % 15746)

 

두 번째 코드 - 나머지 계산을 반복문 안에 넣어줌. 런타임 에러

n이 1일 때 d[2] = 2에서 인덱스 오류가 난다는 것을 발견... 왜 생각을 못했을까

n = int(input())

d = [0] * (n + 1)
d[1] = 1
d[2] = 2

for i in range(3, n+1):
    d[i] = (d[i-1] + d[i-2]) % 15746

print(d[n])

 

세 번째 코드 - 아예 리스트 크기를 문제의 범위로 잡아줌

이 와중에 0 하나 빠뜨려서 또 런타임 에러 났었다..ㅋㅋㅋㅋㅋㅋㅋ

n = int(input())

d = [0] * 1000001
d[1] = 1
d[2] = 2

for i in range(3, n+1):
    d[i] = (d[i-1] + d[i-2]) % 15746

print(d[n])

드디어 성공..

 

ㅎ;