문제
n개의 회의시간이 주어지면 최대한 회의를 많이할 수 있도록 하여라
문제 풀이
n = int(input())
meeting = [tuple(map(int,input().split())) for _ in range(n)]
meeting.sort(key= lambda x: (x[1],x[0]))
cnt = 0
end_time = 0
for s, e in meeting:
if s >= end_time:
end_time = e
cnt += 1
print(cnt)
- 그리디의 경우 정렬된 데이터를 이용해 최선으로 좋은 답을 선택하는 문제이다.
- 회의 시간의 경우 (시작 시간, 끝나는 시간)을 튜플 형태로 리스트에 넣어두고 끝나는 시간을 기준으로 정렬해 시작하는 시간과 비교해준다.
- 시작 시간이 끝나는 시간보다 이른 경우엔 회의실 사용이 불가하다
'자료구조와 알고리즘 > 개인적인 코딩테스트 관련 풀이' 카테고리의 다른 글
[이분탐색(결정알고리즘)][그리디 알고리즘] - 창고 정리(그리디 알고리즘) (0) | 2022.07.12 |
---|---|
[이분탐색(결정알고리즘)][그리디 알고리즘] - 씨름 선수(그리디 알고리즘) (0) | 2022.07.11 |
[이분탐색(결정알고리즘)][그리디 알고리즘] - 마굿간 정하기(결정 알고리즘) (0) | 2022.07.11 |
[이분탐색(결정알고리즘)][그리디 알고리즘] - 뮤직비디오(결정 알고리즘) (0) | 2022.07.09 |
[이분탐색(결정알고리즘)][그리디 알고리즘] - 랜선 자르기(결정 알고리즘) (0) | 2022.07.08 |