[백준] 회의실 배정_1931번
[백준] 회의실 배정
문제
링크 : BOJ
풀이
문제는 회의의 최대 개수를 구하는 것이다.
회의실의 제한시간이 정해져 있지 않으므로 최대로 끝나는 시간이자 시작시간을 기준으로 회의실을 배정한다.
끝나는 시간은 이전 시작 시간보다 작거나 같아야 하고, 한 개의 회의의 회의 시간은 최소가 되어야 한다.
따라서 끝나는 시간을 기준으로 내림차순 정렬 해줘서 가능한 많은 회의가 들어가게 해주고,
시작 시간 기준으로 한번 더 내림차순을 해줘서 가능한 최소 시간의 회의가 내림차순으로 들어가게 해준다.
- data를 받아 끝나는 시간으로 내림차순, 시작 시간으로 내림차순 해준다.
- data의 처음+1부터 끝까지 이전 시작 시간(pre_data)을 기준으로 비교해준다.
- 다음 끝나는 시간이 이전 시작 시간보다 같거나 작다면 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)