본문 바로가기
Algorithm/BOJ

[백준] 2352번 - 반도체 설계 (파이썬)

by _temp 2022. 2. 18.

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

# 반도체 설계
import sys
import bisect
input = sys.stdin.readline

N = int(input())
port = list(map(int, input().split()))

result = [port[0]]
for x in range(1, N):
    if port[x] > result[-1]:
        result.append(port[x])
    else:
        index = bisect.bisect_left(result, port[x])
        result[index] = port[x]

print(len(result))

 

이진탐색, bisec

1. 입력을 받고 port의 첫번째 값을 result에 추가

2. 남은 port의 값중에서

    - result의 마지막 값보다 크면 append

    - result의 마지막 값보다 작으면 bisect_left로 들어갈 index를 구해서 값 교체

3. result의 길이 출력

 

 

문제만 다르지 가장 긴 증가하는 부분 수열 로직과 똑같이 구현하면 된다.