본문 바로가기
  • KEEP HUSTLE!
파이썬 코테 준비

[백준 14003] 가장 긴 증가하는 부분 수열 5 - Python(파이썬)

by 하수군 2021. 4. 3.
import sys
from bisect import bisect_left

N = int(sys.stdin.readline())
data = list(map(int, sys.stdin.readline().split()))

check = [0]
temp = [data[0]]

for i in range(1, N):
    x = data[i]

    if temp[-1] < x:
        temp.append(x)
        check.append(len(temp) - 1)
    else:
        idx = bisect_left(temp, x)
        temp[idx] = x
        check.append(idx)

print(len(temp))

cnt = max(check)
answer = ''

for i in range(N-1, -1, -1):
    if check[i] == cnt:
        answer = str(data[i]) + ' ' + answer
        cnt -= 1
print(answer)

댓글