코딩하는 해맑은 거북이

[Python] 파도반 수열 - 백준 (DP) 본문

코딩테스트

[Python] 파도반 수열 - 백준 (DP)

#CJE 2023. 5. 4.
해당 글은 백준 9461번 문제 '파도반 수열'을 다룬다.

문제

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

 

9461번: 파도반 수열

오른쪽 그림과 같이 삼각형이 나선 모양으로 놓여져 있다. 첫 삼각형은 정삼각형으로 변의 길이는 1이다. 그 다음에는 다음과 같은 과정으로 정삼각형을 계속 추가한다. 나선에서 가장 긴 변의

www.acmicpc.net

 

설명

해당 문제는 DP로 풀면 쉽게 해결할 수 있다.

4번째 값 이후부터는 4-3번째 값과 4-2번째 값을 더한 수열이 반복되므로, 이를 활용하여 점화식을 표현하면 아래와 같다.

# result[1], result[2], result[3]은 모두 1
result[i] = result[i-3]+result[i-2]  # i >= 4

여기서는 테스트케이스마다 result를 구해서 출력해주었는데,

100까지의 모든 result를 계산한 뒤 result[n]만 출력해줘도 될 듯 싶다!

 

코드

T = int(input())

result = [0]*101
for t in range(T):
    n = int(input())
    result[1] = 1
    result[2] = 1
    result[3] = 1
    if n >= 4:
        for i in range(4, n+1):
            result[i] = result[i-3]+result[i-2]
    print(result[n])

     

 

 

Comments