[백준] 회의실 배정_1931번

[백준] 회의실 배정


문제


링크 : BOJ





풀이

문제는 회의의 최대 개수를 구하는 것이다.
회의실의 제한시간이 정해져 있지 않으므로 최대로 끝나는 시간이자 시작시간을 기준으로 회의실을 배정한다.
끝나는 시간은 이전 시작 시간보다 작거나 같아야 하고, 한 개의 회의의 회의 시간은 최소가 되어야 한다. 따라서 끝나는 시간을 기준으로 내림차순 정렬 해줘서 가능한 많은 회의가 들어가게 해주고,
시작 시간 기준으로 한번 더 내림차순을 해줘서 가능한 최소 시간의 회의가 내림차순으로 들어가게 해준다.

  1. data를 받아 끝나는 시간으로 내림차순, 시작 시간으로 내림차순 해준다.
  2. data의 처음+1부터 끝까지 이전 시작 시간(pre_data)을 기준으로 비교해준다.
    1. 다음 끝나는 시간이 이전 시작 시간보다 같거나 작다면 result += 1, pre_data=data[i][0]
n = int(input())
data = []
for _ in range(n):
    x, y = map(int, input().split())
    data.append([x,y])

data = sorted(data, reverse=True,key=lambda x: x[1])
data = sorted(data, reverse=True)
pre_data = data[0][0]
result = 1
for i in range(1,n):
    if pre_data >= data[i][1]:
        result += 1
        pre_data = data[i][0]
    else:
        continue
print(result)

실수했던 점


태그: ,

카테고리:

업데이트: