백준1931 - 회의실 배정

전략

  1. 끝나는 시간을 기준으로 오름차순 정렬을 한다.

    • 빨리 끝나는 것을 먼저 배치해야 남는 시간이 길어진다.

  2. 시작하는 시간을 기준으로 오름차순 정렬을 한다.

    • (3, 8), (5, 8)이라면 (3, 8)을 먼저 시작한다.

코드

from sys import stdin, stdout

def custom_compare(x, y):
  if x[1] < y[1]:
    return 1
  else:
    if x[0] < y[0]:
      return 1
    return -1

N = int(stdin.readline())
arr = []
for i in range(N):
  a, b = map(int, stdin.readline().split(' '))
  arr.append([a, b])

arr = sorted(arr, key=lambda a:a[0])
arr = sorted(arr, key=lambda a:a[1])

cnt = 1
endTime = arr[0][1]
for i in range(1, N):
  if arr[i][0] >= endTime:
    cnt += 1
    endTime = arr[i][1]

stdout.write(str(cnt) + '\\n')

Last updated