백준 11054 - 가장 긴 바이토닉 부분 수열 (파이썬)

Updated:

Answer

n = int(input())
l1 = list(map(int, input().split()))
l2 = l1[::-1]
dp1 = [1] * n
dp2 = [1] * n

for i in range(n):
    for j in range(i):
        if l1[i] > l1[j]:
            dp1[i] = max(dp1[i], dp1[j] + 1)
        if l2[i] > l2[j]:
            dp2[i] = max(dp2[i], dp2[j] + 1)

for i in range(n):
    dp1[i] = dp1[i] + dp2[n-1-i] - 1

print(max(dp1))

Categories:

Updated: