https://www.acmicpc.net/problem/9461
9461번: 파도반 수열
오른쪽 그림과 같이 삼각형이 나선 모양으로 놓여져 있다. 첫 삼각형은 정삼각형으로 변의 길이는 1이다. 그 다음에는 다음과 같은 과정으로 정삼각형을 계속 추가한다. 나선에서 가장 긴 변의
www.acmicpc.net
문제: 해당 그림과 같이 정삼각형의 변의 길이가 구성될 때, 입력된 N의 값에 따라 파도반 수열에 따른 P(N) 값을 구하는 문제
풀이 방법: 다이나믹 프로그래밍
풀이 설명:
주어진 수열은 다음과 같습니다.
[1,1,1,2,2,3,4,5,7,9]
이 수열을 봤을 때, P(i) = P(i-2) + P(i-3) (i >= 4)인 규칙을 발견할 수 있었습니다.
이를 바탕으로 다이나믹 프로그래밍을 통해 문제를 풀었습니다.
풀이 코드:
import sys
t = int(sys.stdin.readline())
p = [0,1,1,1] + [0] * 97
for _ in range(t):
n = int(sys.stdin.readline())
if n > 3:
for i in range(3,n+1):
p[i] = p[i-3] + p[i-2]
print(p[n])
'알고리즘 > 백준알고리즘' 카테고리의 다른 글
[백준알고리즘/1916번/파이썬] 최소비용 구하기 (0) | 2022.07.12 |
---|---|
[백준알고리즘/1697번/파이썬] 숨바꼭질 (0) | 2022.07.08 |
[백준알고리즘/10026번/파이썬] 적록색약 (0) | 2022.07.06 |
[백준알고리즘/11279번/파이썬] 최대 힙 (0) | 2022.07.04 |
[백준알고리즘/9095번/파이썬] 1,2,3 더하기 (0) | 2022.07.04 |