코딩테스트/BOJ

[백준] [DP] [이진탐색] 1965. 상자 넣기

박소민 2023. 5. 13. 17:44
1965. 상자 넣기
 

1965번: 상자넣기

정육면체 모양의 상자가 일렬로 늘어서 있다. 상자마다 크기가 주어져 있는데, 앞에 있는 상자의 크기가 뒤에 있는 상자의 크기보다 작으면, 앞에 있는 상자를 뒤에 있는 상자 안에 넣을 수가

www.acmicpc.net

 

  • 내 풀이
    • 이진탐색 bisect
    • 뒤에 더 작은 값이 나오면 그 값이 들어갈 수 있는 위치 찾기
    • 더 작은 값으로 바꿔줘야 뒤에 더 많은 숫자들이 들어올 수 있음
#1965
from bisect import bisect_left

n=int(input())
lst=list(map(int,input().split()))

result=[0]
answer=0
for ls in lst:
  if result[-1]<ls:
    result.append(ls)
  else:
    x=bisect_left(result,ls)
    result[x]=ls
    
print(len(result)-1)