-
12015번: 가장 긴 증가하는 부분 수열 2
첫째 줄에 수열 A의 크기 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에는 수열 A를 이루고 있는 Ai가 주어진다. (1 ≤ Ai ≤ 1,000,000)
www.acmicpc.net
코드
import sys def find(i): low, high = 1, len(stack)-1 while low < high: mid = (low+high)//2 if stack[mid] < i: low = mid +1 elif stack[mid] > i: high = mid else: low = high = mid return high if __name__ == '__main__': n = int(sys.stdin.readline()) li = list(map(int, sys.stdin.readline().split())) stack = [0] for i in li: if stack[-1] < i: stack.append(i) else: stack[find(i)] = i print(len(stack)-1)
'알고리즘 > 백준' 카테고리의 다른 글
[백준] 1927번 최소 힙 (파이썬) (0) 2022.01.04 [백준] 11279번 최대 힙 (파이썬) (0) 2022.01.04 [백준] 2110번 공유기 설치 (파이썬) (0) 2022.01.02 [백준] 2805번 나무 자르기 (파이썬) (0) 2022.01.02 [백준] 1654번 랜선 자르기 (파이썬) (0) 2022.01.02