알고리즘 풀이/백준

[백준 9461] 파도반 수열

mhko411 2021. 2. 23. 13:25
728x90

www.acmicpc.net/problem/9461

 

9461번: 파도반 수열

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

www.acmicpc.net


접근

변의 길이가 증가하는 규칙을 찾아보면 현재 i번째 길이를 구한다고 했을 때 (i-2) + (i-3)을 통해 구한다.

따라서 위의 점화식을 토대로 구현하도록 한다.

 

구현

초기 세 개의 길이를 1로 초기화하고 이후의 길이는 i = (i-2) + (i-3)이라는 점화식을 통해 구하도록 한다.

test_case = int(input())
for tc in range(test_case):
    N = int(input())
    # 최대 N이 100이기 때문에 100칸 짜리 리스트를 0으로 초기화
    numbers = [0 for _ in range(100)]
    
    # 초기 세 개의 길이는 1이다.
    numbers[0] = 1
    numbers[1] = 1
    numbers[2] = 1
    if N <= 3:
        answer = numbers[N-1]
    else:
        for idx in range(3, N):
            numbers[idx] = numbers[idx-2] + numbers[idx-3]
        answer = numbers[N-1]
    print(answer)

'알고리즘 풀이 > 백준' 카테고리의 다른 글

[백준 15654] N과 M (5)  (0) 2021.02.23
[백준 15650] N과 M(2)  (0) 2021.02.23
[백준 1966] 프린터 큐  (0) 2021.02.22
[백준 2609] 최대공약수와 최소공배수  (0) 2021.02.22
[백준 15829] Hashing  (0) 2021.02.22