백준|1689번|겹치는 선분

README·2023년 4월 4일
0

파이썬 PS풀이

목록 보기
135/136

문제 설명

숫자 쌍으로 선분의 범위들을 입력받고 선분이 가장 많이 겹치는 부분에서 겹쳐있는 선분의 개수를 출력하는 문제입니다.

작동 순서

  1. 선분의 개수 N을 입력받습니다.
  2. 선분의 범위들을 입력받고 시작점 기준으로 정렬합니다.
  3. 시작점의 위치 순서대로 앞의 선분 중 끝나는 점이 현재 선분의 시작점보다 뒤에 있는 선분의 개수를 구하고 그 중 최댓값을 저장합니다.
  4. 최댓값을 출력합니다.

소스코드

import sys
import heapq
input = sys.stdin.readline

N = int(input())
segment = []
heap = []
for i in range(N):
    segment.append(tuple(map(int, input().split())))
segment.sort()
maxLen = 0
for s, e in segment:
    while heap and heap[0] <= s:
        heapq.heappop(heap)
    heapq.heappush(heap, e)
    if maxLen < len(heap):
        maxLen = len(heap)
print(maxLen)
profile
INTP 개발자 지망생

0개의 댓글