[Boj문제풀이]

[Boj/백준] 19598 Python

ki7348 2021. 9. 15. 17:32

문제출처: https://www.acmicpc.net/problem/19598

 

19598번: 최소 회의실 개수

서준이는 아빠로부터 N개의 회의를 모두 진행할 수 있는 최소 회의실 개수를 구하라는 미션을 받았다. 각 회의는 시작 시간과 끝나는 시간이 주어지고 한 회의실에서 동시에 두 개 이상의 회의

www.acmicpc.net

 

 

1. 문제 접근 방식

엄청 많이 헤맸다... 먼저 배열을 선언하고 start를 기준으로 정렬한다.

힙을 선언한 후에 배열을 순회하면서 heap[0]보다 start값이 크거나 같으면 heappop을 해주고(회의실 그대로 사용) 아니면 count값을 추가(회의실 한 개 더 선언)해준다.

 

 

2. 내가 푼 코드

import sys
import heapq

case = int(sys.stdin.readline())
arr = []
for _ in range(case):
    arr.append(list(map(int, sys.stdin.readline().split())))
arr.sort(key=lambda x: x[0])
 
heap = [0]
count = 1

for start, end in arr:
    if start >= heap[0]:
        heapq.heappop(heap)
    else:
        count+=1
    heapq.heappush(heap, end)
 
print(count)

 

 

3. 결과 및 느낀점

자주 출체될 수 있을거 같은 유형이라 확실하게 공부해야 할 것 같다.

for루프를 돌 때 초기값만 경우를 다르게 줘야한다면

[0]인 배열을 선언해도 괜찮을 것 같다.

'[Boj문제풀이]' 카테고리의 다른 글

[Boj/백준] 22252 Python  (0) 2021.09.17
[Boj/백준] 13975 Python  (0) 2021.09.16
[Boj/백준] 19638 Python  (0) 2021.09.14
[Boj/백준] 15903 Python  (0) 2021.09.14
[Boj/백준] 1927 11279 11286 Python  (0) 2021.09.13