백준 1931 회의실 배정

홍찬우·2023년 7월 31일
0

문제

회의실 배정

최대 사용 가능한 회의 수를 구하자

난이도 : Silver1


풀이

1. 회의 시작 시간과 종료 시간을 모두 빠른 순으로 정렬
2. 반복문을 통해 인접한 회의를 비교하며 최대 회의 수 계산


코드

import sys

N = int(sys.stdin.readline())
meetings = [list(map(int, sys.stdin.readline().split())) for _ in range(N)]

max_ = 1  # 최댓값 저장 변수
meetings = sorted(meetings, key=lambda x: (x[0], x[1]))  # 회의 시작 시간과 종료 시간 모두 빠른 순서로 정렬
latest = meetings[0]  # 가장 마지막에 끝난 회의를 저장하는 변수 (Type: tuple)

for i in range(1, len(meetings)):
    start, end = meetings[i]  # 새 회의 시작 시간, 종료 시간
    if latest[0] < start < latest[1] and latest[1] >= end:  # 두 회의가 겹치고, 새 회의 종료 시간이 기존 회의 종료 시간보다 늦으면
        latest = meetings[i]  # 종료 시간이 빠를 수록 더 많은 회의를 참가할 수 있으므로 latest update

    elif start >= latest[1]:  # 새 회의(meetings[i]) 시작 시간이 기존 회의 종료 시간보다 늦은 경우
        max_ += 1
        latest = meetings[i]  # 마지막 회의가 바뀌었으므로, update
    
print(max_)
profile
AI-Kid

0개의 댓글