백준 9461 파도반 수열

치즈말랑이·2022년 3월 21일
0

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

앞 dp 문제들을 풀어보니 이건 엄청 쉽게 느껴진다.
이건 그냥 N이 5이상이 되면 [N-1] + [N-5] 한게 값이 된다.

T = int(input())
dp = [0] * 101
dp[0] = 1
dp[1] = 1
dp[2] = 1
dp[3] = 2
dp[4] = 2
dp[5] = 3
dp[6] = 4
dp[7] = 5
dp[8] = 7
dp[9] = 9

for _ in range(T):
    N = int(input())
    if N < 11:
        print(dp[N-1])
    else:
        for i in range(10, N):
            dp[i] = dp[i-1] + dp[i-5]
        print(dp[N-1])

처음에는 append로 했었는데 자꾸 이상하게 결과가 나와서 왜그런가 고민을 해봤다. 그 결과 append로 하면 리스트가 영구히 바뀌게 되고, 수가 중복append되는 현상이 일어난다는걸 알았다.
dp는 값을 중복해서 계산하지 않으려는 것이기 때문에 append를 쓰면 안되고 이렇게 해야 한다는것을 깨달았다.

profile
공부일기

0개의 댓글

관련 채용 정보