Algorithm
[파이썬] 백준 1931번: 회의실 배정
bbomi
2021. 7. 2. 23:50
https://www.acmicpc.net/problem/1931
1931번: 회의실 배정
(1,4), (5,7), (8,11), (12,14) 를 이용할 수 있다.
www.acmicpc.net
1. 회의 시간을 받은 뒤에 끝나는 시간을 기준으로 정렬해줍니다.
예시의 경우 아래와 같이 정렬이 됩니다.
meeting_sort = sorted(meeting, key=lambda x: [x[1], x[0]])
meeting_sort
[(1, 4),
(3, 5),
(0, 6),
(5, 7),
(3, 8),
(5, 9),
(6, 10),
(8, 11),
(8, 12),
(2, 13),
(12, 14)]
2. 처음 회의 시작 시간을 0으로 시작 (start = 0) 합니다.
다음 번 회의 시작 시간이 이전 번 회의가 끝나는 시간보다 크거나 같아야 하기 때문에,
이 점을 유의하면서 코드를 정의해줍니다.
cnt = 0 #가능한 회의 개수
start = 0 #처음 시작 가능한 시간
for times in meeting_sort: #정렬된 회의 시간 for loop
if times[0] >= start: #회의가 시작 가능한 경우
start = times[1] #다음 번 회의가 시작 가능한 시간을 업데이트
cnt += 1 #회의 개수 +1
print(cnt)
전체 코드는 다음과 같습니다.
n = int(input())
meeting = [tuple(map(int, input().split())) for _ in range(n)]
meeting_sort = sorted(meeting, key=lambda x: [x[1], x[0]])
cnt = 0
start = 0
for times in meeting_sort:
if times[0] >= start:
start = times[1]
cnt += 1
print(cnt)