🧑💻 백준 1931 - 회의실 배정
Silver 1 - 정렬
회의실 한 개가 있다
입력값으로 회의 시작 시간과, 회의 끝나는 시간이 주어진다
시작 시간과, 끝나는 시간은 같을 수 있지만, 회의끼리 겹치면 안 된다
즉 시작하는 시간 순으로 먼저 정렬을 한 후, 또 한번 회의가 끝나는 순서로 정렬을 하면 된다
제일 중요한 것은 회의가 일찍 끝날수록, 더 많은 회의를 회의실에서 할 수 있다
문제 풀이
- 회의가 시작하는 시간 기준으로 정렬을 한다
- 그리고 회의가 끝나는 시간 기준으로 정렬을 한다
- 결과적으로 회의가 끝나는 시간 기준으로 정렬이 되어 있다
- 정렬된 회의 중 첫 회의는 무조건 진행을 한다
- for문을 돌면서 전 회의의 끝나는 시간과 현재 회의의 시작 시간이 같거나 더 클 때에,
meeting_now
를 갱신해주고 회의의 횟수를 더해준다
코드
N = int(input())
meeting = []
for _ in range(N):
meeting.append(tuple(map(int, input().split())))
# 빨리 시작하는 기준으로 정렬
meeting.sort(key=lambda x: x[0])
# 그 다음 빨리 시작하는 정렬 기준으로, 빨리 끝나는 기준으로 정렬
meeting.sort(key=lambda x: x[1])
cnt = 1
meeting_now = meeting[0]
for i in range(1, N):
if meeting[i][0] >= meeting_now[1]:
meeting_now = meeting[i]
cnt += 1
print(cnt)
'알고리즘 > 정렬' 카테고리의 다른 글
[Python] 백준 13904 - 과제 (0) | 2023.01.15 |
---|---|
[Python] 백준 1374 - 강의실 (0) | 2023.01.14 |
[Python] 백준 2437 저울 (1) | 2023.01.11 |
[Python] 백준 6068 시간 관리하기 (0) | 2023.01.09 |
[Python] 백준 1946 신입 사원 (0) | 2023.01.09 |