티스토리 뷰

#include <string>
#include <vector>
#include <queue>
#include <algorithm>

using namespace std;

int solution(vector<vector<string>> book_time) {
    int answer = 0;

    vector<pair<int, int>>v;
    for (auto i : book_time) 
    {
        int s = stoi(i[0].substr(0, 2)) * 60 + stoi(i[0].substr(3, 2));
        int e = stoi(i[1].substr(0, 2)) * 60 + stoi(i[1].substr(3, 2)) + 10;
        v.push_back({s, e});  
    }

    sort(v.begin(), v.end());

    priority_queue<int, vector<int>, greater<int>> pq; //빨리 끝나는 시간 기준

    for(int i=0; i<v.size(); i++)
    {
        if(!pq.empty() && pq.top() <= v[i].first) pq.pop(); //이어서 가능
        pq.push(v[i].second); //새로운 시간대 추가
    }
    answer = pq.size();
    return answer;
}

 

시작 시간과 끝나는 시간을 계산하여 벡터에 담아준다.

이를 시작 시간 빨리 끝나는 순으로 정렬을 하고, 또 빨리 끝나는 시간 기준으로 pq를 선언해준다.

 

이후 벡터 값을 돌면서, pq에 기본적으로 끝나는 시간대를 넣어준다.

그리고 pq.top() 값을 체크하여 이 값이 시작하는 시간대보다 작거나 같다면 기존 pq 값을 제거 해준다.

이렇게 계산한 최종 pq 사이즈를 출력해주면 된다.

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/07   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
글 보관함