티스토리 뷰
#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 사이즈를 출력해주면 된다.
'프로그래머스 > 2레벨' 카테고리의 다른 글
[프로그래머스 2레벨] 미로 탈출 (C++) (0) | 2025.02.23 |
---|---|
[프로그래머스 2레벨] 숫자 카드 나누기 (C++) (0) | 2025.02.19 |
[프로그래머스 2레벨] 124나라의 숫자 (C++) (0) | 2025.02.18 |
[프로그래머스 2레벨] 시소 짝꿍 (C++) (0) | 2025.02.15 |
[프로그래머스 2레벨] 전력망을 둘로 나누기 (C++) (0) | 2025.02.14 |