Notice
Recent Posts
Recent Comments
Link
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
Archives
Today
Total
관리 메뉴

0과 1 사이

[파이썬(python)] 백준 15988 본문

코딩테스트

[파이썬(python)] 백준 15988

고후 2022. 2. 18. 11:21

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

 

15988번: 1, 2, 3 더하기 3

각 테스트 케이스마다, n을 1, 2, 3의 합으로 나타내는 방법의 수를 1,000,000,009로 나눈 나머지를 출력한다.

www.acmicpc.net

 

첫 코드

 

t = int(input())
n = []

for _ in range(t):
    n.append(int(input()))
    
max_n = max(n)
result = [0] * (max_n+1)
result[1] = 1
result[2] = 2
result[3] = 4


for i in range(4, max_n+1):
    result[i] = result[i-1] + result[i-2] + result[i-3]

for i in range(t):
    print(result[n[i]])

 

그 결과.. 메모리 초과 발생 ㅜㅜ

예제에 대해서는 맞았는데 무슨 문제인지 한참 들여다보다가

 

문제에서 10000009로 나눠줘야 한다는 것을 보고 그걸 반영해봤다.

그렇게 하니까 메모리 초과 안남!!! 성공.

아마도 배열에 10000009보다 큰 수가 들어가면 메모리 초과가 발생하는 것 같다.

 

t = int(input())
n = []

for _ in range(t):
    n.append(int(input()))
    
max_n = max(n)
result = [0] * (max_n+1)
result[1] = 1
result[2] = 2
result[3] = 4


for i in range(4, max_n+1):
    result[i] = (result[i-1] + result[i-2] + result[i-3])%1000000009

for i in range(t):
    print(result[n[i]])
Comments