📖 문제 링크
https://www.acmicpc.net/problem/9461
9461번: 파도반 수열
오른쪽 그림과 같이 삼각형이 나선 모양으로 놓여져 있다. 첫 삼각형은 정삼각형으로 변의 길이는 1이다. 그 다음에는 다음과 같은 과정으로 정삼각형을 계속 추가한다. 나선에서 가장 긴 변의
www.acmicpc.net
👩💻 문제풀이
생각보다 규칙이 쉽게 찾아진 문제였다!
P(1)부터 P(10)까지 수열을 표로 나열해보니, P(6)부터 규칙적으로 수가 증가하는 것을 확인할 수 있었다.
P(6)의 경우, P(1)과 P(5)의 합이며, P(7)의 경우 P(2)와 P(6)의 합인 것을 확인할 수 있다.
즉, 이를 토대로 점화식을 세우면 아래와 같다.
dp[i] = dp[i-5] + dp[i-1]
dp[1]부터 dp[5]까지는 하드코딩으로 처리해주었다.
✅ 최종 코드
n = int(input())
for _ in range(n):
k = int(input())
dp = [0] * 101
dp[1] = 1
dp[2] = 1
dp[3] = 1
dp[4] = 2
dp[5] = 2
for j in range(6, k+1):
dp[j] = dp[j-5] + dp[j-1]
print(dp[k])
'알고리즘 > Python' 카테고리의 다른 글
[백준/Python] 2751번: 수 정렬하기 2 (0) | 2022.01.23 |
---|---|
[백준/Python] 2011 암호코드 (0) | 2022.01.23 |
[백준/Python] 2133 타일 채우기 (0) | 2022.01.22 |
[백준/Python] 1699 제곱수의 합 (0) | 2022.01.18 |
[백준/Python] 2579 계단 오르기 (0) | 2022.01.18 |