백준 11054번

김가람·2023년 3월 25일
0

1. 문제

11054번

2. 풀이

  • 11053번을 바탕으로 응용해서 푼다.
N = int(input())
arr = list(map(int, input().split()))

up = [1 for _ in range(N)] # 정방향으로 증가하는 수열 길이 구하는 공간
bi = [1 for _ in range(N)] # 역방향으로 증가하는 수열 길이 구하는 공간

for i in range(N):
    for j in range(i):
        if arr[i] > arr[j]:
        	# 정방향 i번째 숫자에 대해 증가하는 수열 길이 계산
            up[i] = max(up[i], up[j] + 1)

for i in range(N-1,-1,-1):
    for j in range(N-1, i, -1):
        if arr[i] > arr[j]:
        	# 역방향 i번째 숫자에 대해 증가하는 수열 길이 계산
            bi[i] = max(bi[i], bi[j] + 1)

print(max([up[i] + bi[i] - 1 for i in range(N)]))
profile
부캐:데이터 사이언티스트가 되고 싶은 반도체 공장 노예

0개의 댓글