Open seungriyou opened 5 months ago
https://leetcode.com/problems/maximum-number-of-events-that-can-be-attended/ similar to #70 [!tip] [프로그래머스] 디스크 컨트롤러 문제와 비슷한 것 같다.
https://leetcode.com/problems/maximum-number-of-events-that-can-be-attended/ similar to #70
[!tip] [프로그래머스] 디스크 컨트롤러 문제와 비슷한 것 같다.
greedy 문제이며, sorting 및 priority queue를 활용해야 한다.
현재 날짜에서 attend 가능한 event 중, 가장 먼저 종료될 event에 attend 한다!
events를 시작 날짜 기준으로 오름차순 정렬 및 reverse한다.
events
event의 종료 날짜를 담을 min heap pq을 선언하고, pq와 events가 모두 empty가 될 때까지 다음을 반복한다.
event
pq
day
events[-1][0]
cnt
cnt 값을 반환한다.
O(nlogn)
O(n)
Approach
greedy 문제이며, sorting 및 priority queue를 활용해야 한다.
events
를 시작 날짜 기준으로 오름차순 정렬 및 reverse한다.event
의 종료 날짜를 담을 min heappq
을 선언하고,pq
와events
가 모두 empty가 될 때까지 다음을 반복한다.pq
가 비었다면, 현재day
를events[-1][0]
으로 설정한다.day
와 같은 날짜에 시작하는 event의 종료 날짜를pq
에 담는다.pq
(무조건 empty가 아님)에서 pop한다. 즉, 현재 날짜에서 attend 가능한 event 중 가장 먼저 종료될 event에 attend 한다.day
과cnt
를 모두 증가시킨다.pq
에서 종료 날짜가 현재day
보다 이른 event는 삭제한다.cnt
값을 반환한다.Complexity
O(nlogn)
(sorting)O(n)