백준 1931번 : 회의실 배정
난이도 : 실버1

- 문제 소개


- 조건

  • 없음

- 코드

import sys
input = sys.stdin.readline

N = int(input())

meeting = [[0] * 2 for _ in range(N)]
for i in range(N):
    s, e = map(int, input().split())
    meeting[i][0] = s
    meeting[i][1] = e

meeting.sort(key = lambda x: (x[1], x[0]))
cnt = 1
endTime = meeting[0][1]
for i in range(1, N):
    if meeting[i][0] >= endTime:
        cnt += 1
        endTime = meeting[i][1]

print(cnt)

- 해설

총 회의의 수 N을 입력받고, 그 수만큼 회의의 시작시간과 끝 시간을 입력받는다. 그런 다음 끝 시간을 기준으로 오름차순 정렬을 해주는데, 조건을 붙일 수 있으면 끝 시간이 같을 때 시간 시간이 작은 순으로 정렬을 해주는 것도 필요해보인다. entTime이란 변수에 첫 회의의 끝 시간을 저장해주고, 2번째 회의부터 N번째 회의까지 for문을 통해 확인해준다. 만약 회의의 시작 시간이 entTime보다 크면 cnt를 늘려주고 entTime을 회의의 끝 시간으로 바꿔주면서 회의가 가능한 최대 개수를 체크한다.

0개의 댓글