티스토리 뷰

728x90
반응형

문제

 

www.acmicpc.net/problem/9461

 

9461번: 파도반 수열

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

www.acmicpc.net

 

코드

 


T = int(input())


for i in range(T):
    
    a=int(input())
    result = [0] * (a)
    
    for j in range(a):
        if j <= 2:
            result[j] = 1
        elif j <= 4:
            result[j] = 2
        else:
            result[j] = result[j-5] + result[j-1]
            
    print(result[a-1])

 

코드설명

 

1  1  1  2  2  3  4  5  7  9  12  16  21  28   => 변의길이
0  1  2  3  4  5  6  7  8  9  10  11  12  13   => 인덱스값

 

변의길이(인덱스값)


3(5) = 1(0) + 2(4)
4(6) = 1(1) + 3(5)
5(7) = 1(2) + 4(6)
7(8) = 2(3) + 5(7)
9(9) = 2(4) + 7(8)
12(10) = 3(5) + 9(9)
16(11) = 4(6) + 12(10)

 

 

점화식을 찾아야 쉽게 풀 수 있는 문제인것 같다.

0~4 까지는 특별한 규칙이 존재하지 않는것 같아 미리 리스트에 넣어준다.

5부터는 result[n] = result[n-5] + result[n-1] 점화식이 성립한다.

 

반응형
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/10   »
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