Study/BOJ

BOJ 9461번

루ㅌ 2020. 3. 13. 12:05

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

불러오는 중입니다...

피도반 수열의 새로운 삼각형의 한 변의 길이는 직전 삼각형의 변의 길이와 5번째 전 삼각형의 변의 길이의 합입니다.

 

import sys

def make_p_list(max_range, p_list):
    if max_range > 10:
        for i in range(max_range - 10):
            next_p = p_list[-1] + p_list[-5]
            p_list.append(next_p)
    else:
        pass

    return p_list

def out(p_list, test_case_list):
    for test_case in test_case_list:
        print(p_list[test_case-1])

T = int(sys.stdin.readline())

p_list = [1, 1, 1, 2, 2, 3, 4, 5, 7, 9]
test_case_list = []
max_range = 10

for i in range(T):
    test_case = int(sys.stdin.readline())
    if test_case > max_range:
        max_range = test_case

    test_case_list.append(test_case)

p_list = make_p_list(max_range, p_list)
out(p_list, test_case_list)

 

우선 테스트 케이스를 담을 test_case_list를 구하고 

max_range라는 값에 테스트 케이스중 가장 큰 값을 담습니다.

 

make_p_list로 10개까지 구해진 p_list에 max_range가 10이 넘는다면 max_range까지 p_list에 값을 추가합니다.

out 함수로 테스트 케이스를 담은 test_case_list를 for문으로 돌며 p_list에서 해당하는 값을 가져옵니다.