163 words
1 minutes
[NYPC] 1차 4번 오르락 내리락
기본적인 dp 문제2
def solution(T):
n = len(T)
if n <= 2: return n
# dp[i][0]: i번째 원소로 끝나는 홀수 위치 증가 수열의 최대 길이
# dp[i][1]: i번째 원소로 끝나는 짝수 위치 감소 수열의 최대 길이
dp = [[1, 1] for _ in range(n)]
dp[1] = [1, 2]
max_length = 1
# 0번째가 증가, 즉 홀수 -> -2
# 1번째가 감소, 즉 짝수
for i in range(2, n):
if T[i - 2] < T[i]:
dp[i][0] = dp[i - 1][1] + 1
dp[i][1] = 2
if T[i - 2] > T[i]:
dp[i][1] = dp[i - 1][0] + 1
# dp[i][0] = 2
if T[i - 2] == T[i]:
dp[i] = [1, 2]
max_length = max([dp[i][0], dp[i][1], max_length])
# print(dp)
return max(max_length, 2)
input()
print(solution(list(map(int, input().split()))))
[NYPC] 1차 4번 오르락 내리락
https://compy07.github.io/Blog/posts/algorithms/nypc/2024/first/4/