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

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

백준11054 가장 긴 바이토닉 부분 수열 링크

문제

문제

예제 입력

예제


코드

import sys
input = sys.stdin.readline

N = int(input())
arr = list(map(int, input().split()))

dp1 = [0] * N
for i in range(N):
    for j in range(i):
        if arr[j] < arr[i] and dp1[i] < dp1[j]:
            dp1[i] = dp1[j]
    dp1[i] += 1

dp2 = [0] * N
for i in range(N-1, -1, -1):
    for j in range(N-1, i, -1):
        if arr[j] < arr[i] and dp2[i] < dp2[j]:
            dp2[i] = dp2[j]
    dp2[i] += 1

ans = [dp1[i]+dp2[i]-1 for i in range(N)]
print(max(ans))

설명

파이썬을 통해서 사용자로부터 입력받아 dp알고리즘을 사용하여 가장 긴 바이토닉 부분 수열를 구현했습니다.


결과

결과


© 2022. All rights reserved. 신동민의 블로그