#include <string>
#include <vector>
#include <queue>
using namespace std;
int solution(vector<int> priorities, int location) {
int answer = 0;
priority_queue<pair<int, int>> pq;
queue<pair<int, int>> q;
for(int i = 0; i < priorities.size(); i++)
{
pq.push({priorities[i], i});
q.push({priorities[i], i});
}
while(!pq.empty())
{
int currVal = q.front().first;
int currNum = q.front().second;
//제일 값이 높은 것과 현재 것이 같다, 현재 번호와 location이랑 같아야 된다.
if(pq.top().first == currVal && location == currNum)
{
answer++;
break;
}
//제일 값이 높은 것과 현재 것이 같다, 현재 번호와 location이랑 다르다.
else if(pq.top().first == currVal && location != currNum)
{
answer++;
pq.pop();
q.pop();
}
//제일 값이 높은 것과 현재 것이 다르면 뒤로 넘긴다.
else
{
q.pop();
q.push({currVal, currNum});
}
}
return answer;
}
풀이
- 중요도 순서로 정리되어있고 각 중요도 별로 location번호가 있는 리스트를 만든다.
- 원래 들어있는 순서와 location번호로 정리된 리스트를 만든다.
- 서로 비교하면서 제일 높은 값과 현재 값이 같고 location번호가 같으면 break;
- 제일 높은 값과 현재 값이 같고 location번호가 다르면 제일 높은 값과 현재값 제거
- 제일 높은 값과 현재 값이 다르면 현재 값을 맨 뒤로 보낸다.
'Algorithm > Programmers' 카테고리의 다른 글
[C++] 프로그래머스 키패드누르기 2020 카카오 인턴십 (0) | 2021.05.05 |
---|---|
[C++] 프로그래머스 더 맵게 힙 (0) | 2021.05.04 |
[C++] 프로그래머스 기능개발 스택/큐 (0) | 2021.05.03 |
[C++] 프로그래머스 주식가격 스택/큐 (0) | 2021.05.03 |
[C++] 프로그래머스 다리를 지나는 트럭 스택/큐 (0) | 2021.05.03 |