https://www.acmicpc.net/problem/11054
n = int(input())
nums = list(map(int, input().split()))
# 증가 DP
asc_dp = [1] * n
for i in range(1, n):
for j in range(i):
if nums[j] < nums[i]:
asc_dp[i] = max(asc_dp[i], asc_dp[j] + 1)
# 감소 DP
des_dp = [1] * n
for i in range(n - 2, -1, -1):
for j in range(n - 1, i, -1):
if nums[j] < nums[i]:
des_dp[i] = max(des_dp[i], des_dp[j] + 1)
# 바이토닉 수열 길이 계산
ans = 0
for i in range(n):
max_length = max(max_length, asc_dp[i] + des_dp[i] - 1)
print(ans)
'백준' 카테고리의 다른 글
백준 1515. 수 이어 쓰기 (0) | 2024.12.14 |
---|---|
백준 1958. LCS 3 (0) | 2024.11.30 |
백준 2631. 줄세우기 (0) | 2024.11.28 |
백준 5972. 택배 배송 (0) | 2024.11.27 |
백준 11657. 타임머신 (0) | 2024.11.25 |