-
프로그래머스 Lv2 프로세스Computer Science/프로그래머스 2023. 9. 23. 09:10
중요도를 기준으로 자동 정렬되는 우선순위 큐와 현재프로세스를 저장하는 큐를 비교하며 우선순위와 큐가 갖는 프로세스 순서가 일치 할 때 정답에서 구하고자하는 인덱스와 동일하다면 정답을 리턴한다.
문제 풀이
우선순위 큐는 프로세스가 실행 될 중요도를 저장큐는 프로세스 중요도와 인덱스를 순차적으로 저장했다.
for(int i = 0; i < priorities.size(); ++i) { q.push({priorities[i], i}); pq.push(priorities[i]); }
프로세스가 먼저 실행 될 우선순위가 아니라면 후순위로 빼는 작업을 큐를 pop(), push()하여 구현했다.
}else { pair<int, int> data = q.front(); q.push(data); q.pop(); }
프로세스가 실행 될 우선순위라면 해당 프로세스를 제거하기 위해 우선순위 큐와 큐에서 pop()했다.
if(pq.top() == q.front().first) { ++answer; if(q.front().second == location) break; pq.pop(); q.pop(); }else
#include <vector> #include <queue> #include <iostream> using namespace std; int solution(vector<int> priorities, int location) { int answer = 0; queue<pair<int, int>> q; priority_queue<int> pq; for(int i = 0; i < priorities.size(); ++i) { q.push({priorities[i], i}); pq.push(priorities[i]); } while(1) { if(pq.top() == q.front().first) { ++answer; if(q.front().second == location) break; pq.pop(); q.pop(); }else { pair<int, int> data = q.front(); q.push(data); q.pop(); } } return answer; }
문제를 복기 할 때 ㅜㅜ 우선순위큐에 인덱스를 저장했는데, 프로세스 실행 순서가 같으면 인덱스가 내림차순으로 정렬 되었다. 우선순위큐는 기본적으로 내림차순으로 정렬한다는 것을 기억하자.
'Computer Science > 프로그래머스' 카테고리의 다른 글
프로그래머스 Lv2 의상 (0) 2023.09.24 프로그래머스 Lv2 다리를 지나는 트럭 (0) 2023.09.24 프로그래머스 Lv2 스택/큐 기능개발 (0) 2023.09.23 혼자하는 틱택토 (0) 2023.09.16 [PS][lv2] 점 찍기 (0) 2023.07.01