https://programmers.co.kr/learn/courses/30/lessons/42587
이번 문제는 큐(Queue) 문제였습니다.
《문제 풀이》
1. 문서의 중요도와 각 문서의 인덱스를 큐 q에 삽입
2. 문서의 중요도를 판별하기 위해 우선순위 큐 pq에 문서의 중요도 삽입
3. 현재 문서의 중요도가 가장 높다면 인쇄 ← print++
☛ 이 때, 현재 문서가 내가 요청한 문서의 대기 목록 위치라면 반복문 종료 ⭐️ (시간 초과 문제로 꼭 해주어야 해요!)
《C++ 코드》
#include <string>
#include <vector>
#include <queue>
using namespace std;
int solution(vector<int> priorities, int location) {
int answer = 0;
int print = 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(!q.empty()) {
int value = q.front().first;
int idx = q.front().second;
q.pop();
if (pq.top() == value) {
pq.pop();
print++;
if (idx == location) {
answer = print;
break;
}
}
q.push({ value, idx });
}
return answer;
}
반응형
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 점프와 순간 이동 (0) | 2022.02.21 |
---|---|
[프로그래머스] 영어 끝말잇기 (0) | 2022.02.18 |
[프로그래머스] 괄호 변환 (0) | 2022.02.16 |
[프로그래머스] 전화번호 목록 (0) | 2022.02.15 |
[프로그래머스] 짝지어 제거하기 C++ (0) | 2022.02.14 |