풀이 과정
1. 점화식으로 표현해보기
2. 작은 수부터 일일이 계산해 규칙 찾아내기
3. 바텀업으로 풀어보기 >>> 런타임 에러
4. 생략된 규칙 추가하기 (%15746) >>> 메모리 초과
5. %15746의 위치를 출력 구문이 아닌, 입력 부분으로 옮김 >>> 런타임 에러
------ 계속해서 index 에러가 나고 있었다. 다른 분들의 코드를 참고한 결과, 가장 큰 차이점은 빈 배열을 만드는 부분이었따.
나는 d = [0] * (n+1)로 했는데, 다른 사람들은 아예 배열의 길이를 N의 최대값인 1000000+1로 고정해뒀더라.
그걸 수정하니, 정답처리 되었다. 아직 왜 그런지는 모르겠다.
import sys
input = sys.stdin.readline
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]
d[i] %= 15746
print(d[n])
'⚡️algorithm' 카테고리의 다른 글
[DP] 백준 11052. 카드 구매하기 (0) | 2022.04.19 |
---|---|
[DP] 백준 1699. 제곱수의 합 (0) | 2022.04.19 |
[DP] 백준 1463. 1로 만들기 (0) | 2022.04.16 |
[DP 다이나믹 프로그래밍] 코드 패턴과 특징 (0) | 2022.04.16 |
[그래프, DFS] 백준 9466. 팀정하기 (0) | 2022.04.14 |