Files
Algorithm/백준/Gold/14002. 가장 긴 증가하는 부분 수열 4/가장 긴 증가하는 부분 수열 4.py

30 lines
556 B
Python

import sys
from bisect import bisect_left
input = sys.stdin.readline
n = int(input())
lst = list(map(int, input().split()))
dp_table = [1 for i in range(n+1)]
prev = [-1 for i in range(n+1)]
for i in range(n):
for j in range(i):
if lst[i] > lst[j] and dp_table[i] < dp_table[j] + 1:
dp_table[i] = dp_table[j] + 1
prev[i] = j
k = max(dp_table)
idx = dp_table.index(k)
result = []
while idx!=-1:
result.append(lst[idx])
idx = prev[idx]
result.reverse()
print(k)
print(*result)