문제 정의
주식투자를 좋아하는 정인이는 주가의 오름세를 살펴보려고 한다.
정인이는 n일 동안 매일 주가를 적어놓았고, 여기서 오름세를 찾아보려고 한다.
n일 동안의 주가를 p1, p2, ..., pn이라고 했을 때, 오름세란 부분수열 pi1 < pi2 < ... < pik (i1 < i2 < ... ik)을 말한다.
n일 동안 주가가 주어졌을 때, 가장 긴 오름세를 찾는 프로그램을 작성하시오.
입력
입력은 여러개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스의 첫째 줄에는 주가를 관찰한 날의 수 N (N ≤ 100000)이 주어진다. 둘째 줄에는 관찰한 주가가 첫 날부터 순서대로 주어진다. 주가는 한 개 이상의 공백으로 구분되어 있으며, 그 외의 위치에서도 자유롭게 나올 수 있다. 주가는 100,000보다 작거나 같은 자연수이다.
출력
각 테스트 케이스에 대해서 입력으로 주어진 주가의 가장 긴 오름세의 길이를 출력한다.
예제 입력 1
6
5 2 1 4 5 3
3
1 1 1
4
4 3 2 1
예제 출력 1
3
1
1
코드
from bisect import bisect_left
try:
while 1:
N=int(input())
array=list(map(int,input().split()))
temp_array=[]
for i in array:
index=bisect_left(temp_array,i)
if len(temp_array)!=index:
temp_array[index]=i
else:
temp_array.append(i)
print(len(temp_array))
except:exit()
생각 정리
EOFError가 나왔는데
try catch문에서 EOF를 감지해서 EOF일 때 exit()하는 방법으로 해결했다.
'문제풀이 > 이진탐색' 카테고리의 다른 글
[파이썬] [이진탐색] 백준 1365 꼬인전깃줄 (0) | 2022.01.20 |
---|---|
[파이썬] [이진탐색] 백준 3079 입국심사 (0) | 2022.01.20 |
[파이썬] [이진탐색] 백준 10815 숫자 카드 (0) | 2022.01.18 |
[파이썬] [이진탐색] 백준 1920 수 찾기 (0) | 2022.01.18 |
[파이썬] [이진탐색] 백준 1654 랜선 자르기 (0) | 2022.01.18 |