[백준/python/11054] 가장 긴 바이토닉 부분 수열

bej_ve·2022년 4월 13일
0

python알고리즘

목록 보기
18/46

문제 링크 : 가장 긴 바이토닉 부분 수열

n = int(input())

case = list(map(int, input().split()))
reverse_case = case[::-1]

increase = [1 for i in range(n)] 
decrease = [1 for i in range(n)] 

for i in range(n):
    for j in range(i):
        if case[i] > case[j]:
            increase[i] = max(increase[i], increase[j]+1)
        if reverse_case[i] > reverse_case[j]:
            decrease[i] = max(decrease[i], decrease[j]+1)

result = [0 for i in range(n)]
for i in range(n):
    result[i] = increase[i] + decrease[n-i-1] -1

print(max(result))

증가하는 부분과 감소하는 부분을 각각 계산해서 더해주었다.

0개의 댓글