본문 바로가기
알고리즘/정렬

[Python] 백준 1931 - 회의실 배정

by JayAlex07 2023. 1. 13.

🧑‍💻 백준 1931 - 회의실 배정

Silver 1 - 정렬

null

회의실 한 개가 있다

입력값으로 회의 시작 시간과, 회의 끝나는 시간이 주어진다

시작 시간과, 끝나는 시간은 같을 수 있지만, 회의끼리 겹치면 안 된다

즉 시작하는 시간 순으로 먼저 정렬을 한 후, 또 한번 회의가 끝나는 순서로 정렬을 하면 된다

제일 중요한 것은 회의가 일찍 끝날수록, 더 많은 회의를 회의실에서 할 수 있다

 

문제 풀이

  • 회의가 시작하는 시간 기준으로 정렬을 한다
  • 그리고 회의가 끝나는 시간 기준으로 정렬을 한다
    • 결과적으로 회의가 끝나는 시간 기준으로 정렬이 되어 있다
  • 정렬된 회의 중 첫 회의는 무조건 진행을 한다
  • 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