[백준/Python] 9461번 : 파도반 수열
문제 정보
제목 : 파도반 수열
번호 : 9461번
사용 언어 : Python
문제 링크
https://www.acmicpc.net/problem/9461
9461번: 파도반 수열
오른쪽 그림과 같이 삼각형이 나선 모양으로 놓여져 있다. 첫 삼각형은 정삼각형으로 변의 길이는 1이다. 그 다음에는 다음과 같은 과정으로 정삼각형을 계속 추가한다. 나선에서 가장 긴 변의
www.acmicpc.net
시간 제한 | 메모리 제한 |
1 초 | 128 MB |
문제

오른쪽 그림과 같이 삼각형이 나선 모양으로 놓여져 있다. 첫 삼각형은 정삼각형으로 변의 길이는 1이다. 그 다음에는 다음과 같은 과정으로 정삼각형을 계속 추가한다. 나선에서 가장 긴 변의 길이를 k라 했을 때, 그 변에 길이가 k인 정삼각형을 추가한다.
파도반 수열 P(N)은 나선에 있는 정삼각형의 변의 길이이다. P(1)부터 P(10)까지 첫 10개 숫자는 1, 1, 1, 2, 2, 3, 4, 5, 7, 9이다.
N이 주어졌을 때, P(N)을 구하는 프로그램을 작성하시오.
입력
첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있고, N이 주어진다. (1 ≤ N ≤ 100)
출력
각 테스트 케이스마다 P(N)을 출력한다.
입출력 예제

나의 풀이
N이 제한이 100이하이므로 100까지의 값을 저장할 파도반 수열을 리스트 형태로 생성하여 0을 저장합니다. 파도반 수열의 초기값인 1,1,1을 저장합니다. 100까지 값을 계산하여 저장합니다. P(n) = P(n-2) + P(n-3)
테스트 케이스를 입력받아 반복하며 N의 값을 출력합니다.
코드
padovan_sequence = [0 for i in range(101)] #파도반 수열을 저장할 리스트 생성 (1 <= N <= 100)
padovan_sequence[1] = 1; padovan_sequence[2] = 1; padovan_sequence[3] = 1 # 초기값 저장
for i in range( 4, 101) : # 100까지 값 계산하여 저장함
padovan_sequence[i] = padovan_sequence[i-2] + padovan_sequence[i-3] # 점화식 P(n) = P(n-2) + P(n-3)
T = int(input()) # 테스트 케이스의 개수 T
for i in range( T ) :
N = int(input())
print(padovan_sequence[N])