반응형
문제 링크 : https://www.acmicpc.net/problem/1931
풀이
n = int(input())
room = []
for _ in range(n):
room.append(list(map(int,input().split())))
# 회의 종료시간으로 정렬 이후 시작시간으로 정렬(같은 시각에 종료하는데 시작시간이 빠른것이 먼저 오기위해
room.sort(key = lambda x : (x[1],x[0]))
# 첫번째 회의실은 끝나는 시간이 제일 작은 회의실로 고정
time = room[0][1]
answer = 1
# 다음 회의실의 시간시간이 현재 종료시간보다 크다면 회의실 선택(이미 정렬했기때문에)
for start,end in room[1:]:
if end >= time and start >= time:
time = end
answer += 1
print(answer)
1. 회의실을 종료시간으로 정렬후 시작시간으로 재정렬
2. 첫번째 회의실은 끝나는 시간이 제일 작은 회의실
3. 다음 회의실 시작시간이 현재 종료시간보다 크다면 회의실 선택 어차피 끝나는 시간이 적은 순으로 정렬했기 때문에 시작시간만 고려하면 끝나는 시간은 마찬가지로 제일 적게 선택된다.
반응형
'알고리즘' 카테고리의 다른 글
[BOJ/백트래킹] N과 M (2) (0) | 2023.05.23 |
---|---|
[BOJ/완전탐색] 1018 체스판 다시 칠하기 (0) | 2023.05.23 |
[BOJ/그리디] 13305 주유소 (0) | 2023.05.15 |
[BOJ/그리디] 1541 잃어버린 괄호 (0) | 2023.05.15 |
[BOJ/그리디] 11047 동전 0 (0) | 2023.05.15 |