코테 노트/백준

백준 12015 가장 긴 증가하는 부분 수열 2 Python 3

화요밍 2021. 10. 8. 01:15
728x90
반응형

https://www.acmicpc.net/problem/12015

 

12015번: 가장 긴 증가하는 부분 수열 2

첫째 줄에 수열 A의 크기 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에는 수열 A를 이루고 있는 Ai가 주어진다. (1 ≤ Ai ≤ 1,000,000)

www.acmicpc.net

 

최종 코드

 

GitHub - hwayeon351/BEAKJOON-Algorithms: 백준 알고리즘 소스 코드 모음

백준 알고리즘 소스 코드 모음. Contribute to hwayeon351/BEAKJOON-Algorithms development by creating an account on GitHub.

github.com

import sys
from bisect import bisect_left
input = sys.stdin.readline
N = int(input())
arr = list(map(int, input().split()))
lis = []
for num in arr:
    if len(lis) == 0: lis.append(num)
    else:
        loc = bisect_left(lis, num)
        if loc >= len(lis):
            lis.append(num)
        else:
            lis[loc] = num
print(len(lis))

풀이 과정

import sys
from bisect import bisect_left
input = sys.stdin.readline
N = int(input())
arr = list(map(int, input().split()))
lis = []
for num in arr:
    if len(lis) == 0: lis.append(num)
    else:
        loc = bisect_left(lis, num)
        if loc >= len(lis):
            lis.append(num)
        else:
            lis[loc] = num
print(len(lis))
#시간복잡도 = O(NlogN), 공간복잡도 = O(N)

 

728x90
반응형