9461. 파도반 수열
by 브이담곰
https://www.acmicpc.net/problem/9461
✔ 유형 : DP
✔ 문제 풀이: 규칙을 찾아 수가 작은 경우부터 결과 값을 배열에 채워나감.
이번 문제 같은 경우에는 초기값이 많았다.
처음 변이 1인 삼각형에서 시작해서 변이 1인 삼각형과 2인삼각형이 일직선상에 놓이기 전까지는 일반화를 할 수가 없다.
따라서,
DP[0] = 0
DP[1] = 1
DP[2] = 1
DP[3] = 1
DP[4] = 2
DP[5] = 2
N = 5일 때까지는 값을 정해줘야 한다.
그 이후에는 다음과 같은 점화식을 따른다.
DP[N] = DP[N - 5] + DP[N - 1]
점화식을 이용해 배열을 채워 나가면 N일 때의 값을 구할 수 있다.
코드
import sys
input = sys.stdin.readline
N = int(input())
def wave(N: int):
DP = [0 for _ in range(N+1)]
setting = [1,1,1,2,2]
for i in range(1,N+1):
if i > 5 :
break
DP[i] = setting[i-1]
if N >= 6:
for j in range(6, N+1):
DP[j] = DP[j-5]+DP[j-1]
print(DP[N])
for _ in range(N):
wave(int(input()))
'Coding Test > Baekjoon' 카테고리의 다른 글
1923 연속합 (0) | 2024.08.06 |
---|---|
1932 정수 삼각형 (0) | 2024.08.05 |
2579 계단 오르기 (0) | 2024.07.26 |
1700. 멀티탭 스케줄링 (0) | 2024.07.25 |
3055. 탈출 (0) | 2024.07.18 |
블로그의 정보
농담곰담곰이의곰담농
브이담곰