2022-07-05 @이영훈
문제 분석
전형적인 그리디 알고리즘 문제입니다.
회의실을 가장 많은 횟수로 사용하기 위해서, 회의실 사용이 끝나는 시간을 기준으로 오름차순합니다.
그리고 문제의 조건 중에서 “회의의 시작시간과 끝나는 시간이 같을 수도 있다. 이 경우에는 시작하자마자 끝나는 것으로 생각하면 된다.”라는 조건이 있습니다.
다음과 같은 조건이 들어오는 경우, (1 2) → (2 2)로 2번이 정답입니다. 시작 시간을 오름차순 정렬하지 않으면 (2, 2)로 1번인 결과가 나올 수 있기 때문에, 시작 시간을 오름차순 정렬해야 합니다.
// 입력
2
2 2
1 2
Plain Text
복사
문제 풀이 코드
n = int(input())
meetings = []
for _ in range(n):
start, end = map(int, input().split(" "))
meetings.append((start, end))
# 종료 시간을 오름차순 정렬하고, 시작 시간을 오름차순 정렬합니다
meetings.sort(key=lambda x: (x[1], x[0]))
time = 0
answer = 0
for meeting in meetings:
if time <= meeting[0]:
time = meeting[1]
answer += 1
print(answer)
Python
복사