https://www.acmicpc.net/problem/11054
import sys
input = sys.stdin.readline
N = int(input())
li = list(map(int, input().split(" ")))
reverse_li = li[::-1]
dp = [1]*N
reverse_dp = [1]*N
for i in range(1, N):
for j in range(i):
if li[i] > li[j]:
dp[i] = max(dp[i], dp[j]+1)
if reverse_li[i] > reverse_li[j]:
reverse_dp[i] = max(reverse_dp[i], reverse_dp[j]+1)
dap = [1]*N
for i in range(N):
# 각 숫자에 해당하는 증가 수열+감소 수열 (중복-1)
dap[i] = dp[i]+reverse_dp[N-i-1]-1
print(max(dap))'코딩테스트 > 코딩테스트 문제풀이' 카테고리의 다른 글
| [Python] 백준 <3190-뱀> (0) | 2025.07.16 |
|---|---|
| [Python] 백준 <17299-오등큰수> (0) | 2025.07.12 |
| [Python] 백준 <16929-Two Dots> (0) | 2025.07.11 |
| [Python] 백준 <11053-가장 긴 증가하는 부분 수열> (0) | 2025.07.11 |
| [Python] 백준 <2866-문자열 잘라내기> (0) | 2025.07.10 |