본문 바로가기
알고리즘

BOJ 11054번 (가장 긴 바이토닉 부분 수열)

by eunyoung 2023. 3. 26.

난이도


골드 IV

 

 

 

풀이


import sys

input=sys.stdin.readline

N=int(input())
arr=list(map(int,input().split()))
dp1=[1]*len(arr)
dp2=[1]*len(arr)
sub_len=[0]*len(arr)

for i in range(N):
    for j in range(i):
        if arr[i]>arr[j]:
            dp1[i] = max(dp1[i], dp1[j] + 1)

arr.reverse()
for i in range(N):
    for j in range(i):
        if arr[i]>arr[j]:
            dp2[i] = max(dp2[i],dp2[j]+1)

dp2.reverse()
for i in range(len(arr)):
    sub_len[i]=dp1[i]+dp2[i]

print(max(sub_len)-1)

 

 

링크


https://www.acmicpc.net/problem/11054

 

11054번: 가장 긴 바이토닉 부분 수열

첫째 줄에 수열 A의 크기 N이 주어지고, 둘째 줄에는 수열 A를 이루고 있는 Ai가 주어진다. (1 ≤ N ≤ 1,000, 1 ≤ Ai ≤ 1,000)

www.acmicpc.net

 

'알고리즘' 카테고리의 다른 글

BOJ 18430번(무기 공학)  (0) 2023.03.28
BOJ 16922번(로마 숫자 만들기)  (0) 2023.03.27
BOJ 1038번(감소하는 수)  (0) 2023.03.26
BOJ 9324번(진짜 메세지)  (0) 2023.03.24
BOJ 1260번 - DFS와 BFS  (0) 2023.03.22