문제
https://school.programmers.co.kr/learn/courses/30/lessons/42587
프로그래머스
SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
같은 우선 순위의 값들을 구분하기 위해 queue를 pair<int, int>의 형태로 생성해 index까지 저장하게 함.
priority_queue를 통해 우선순위가 가장 큰 것을 설정 - top에 접근
#include <string>
#include <vector>
#include <algorithm>
#include <queue>
#include <iostream>
using namespace std;
/*
Location의 해당하는 프로세스가 실행되는 순서는 무엇인가
priorities가 큰 순서로 실행됨.
*/
int solution(vector<int> priorities, int location) {
queue<pair<int,int>> q;
priority_queue<int> pq;
for (int i = 0; i < (int)priorities.size(); ++i) {
q.push({priorities[i], i});
pq.push(priorities[i]);
}
int order = 0;
while (!q.empty()) {
auto [pri, idx] = q.front(); q.pop();
if (pri == pq.top()) {
pq.pop();
++order;
if (idx == location) return order;
} else {
q.push({pri, idx});
}
}
return -1; // 이론상 도달 X
}
'코딩 테스트 > C++' 카테고리의 다른 글
| 프로그래머스, C++) Lv 2. 예상 대진표 (0) | 2025.11.08 |
|---|---|
| 프로그래머스, C++) Lv 2. 기능개발 (0) | 2025.11.04 |
| 프로그래머스, C++) Lv 2. 피로도 (0) | 2025.11.04 |
| 프로그래머스, C++) Lv 2. 의상 (0) | 2025.10.24 |
| 프로그래머스, C++) Lv 3. 네트워크 (0) | 2025.10.23 |