1931번: 회의실 배정 (acmicpc.net)

 

import sys
input=sys.stdin.readline

n= int(input())
arr=[[0]*2 for _ in range(n)]

for i in range(n):
    arr[i][0], arr[i][1] = map(int, input().split())

arr=sorted(arr, key=lambda arr:arr[0])
arr=sorted(arr, key=lambda arr:arr[1])


count=1

end_time = arr[0][1]
for i in range(1, n):
    if arr[i][0]>=end_time:  
        end_time=arr[i][1]  
        count+=1

print(count)
       

 

 

1. 먼저 빨리 시작하는 순서대로 정렬해 놓고, 그 상태에서 빨리 끝나는 순서대로 정렬함

 --> 1순위는 끝나는 시간, 2순위는 시작하는 시간으로 정렬된다. 

 


2. (end_time 갱신하는 for문에서)

이미 끝나는 시간 오름차순 정렬 해두었으므로, 현재 end_time보다 작기만 하면 뒤의 회의들보다 빨리 끝나는 게 맞을까? 고민할 필요 없음.

 

'알고리즘 PS > Greedy' 카테고리의 다른 글

그리디 큰 수의 법칙  (0) 2024.06.06
백준 #16953 A→B  (0) 2024.05.07
백준 #11047번 동전 0 파이썬  (1) 2024.01.30
백준 #11399 ATM 파이썬  (1) 2024.01.30
백준 #2864 5와 6의 차이  (0) 2023.10.02

+ Recent posts