[해결과정]
1. 큐(인자 2개), 우선순위 큐 생성
2. 벡터에 있는 것들을 큐에 삽입
-> 우선순위 큐에는 우선 순위 그대로..
-> 큐에는 우선 순위와 초기 위치
3. 무한 반복문을 돌며 큐의 중요도와 우선순위 큐의 맨 앞의 중요도를 비교
-> 만약 중요도가 같다면 pq.pop() 하고 answer++
-> 만약 순서가 location과 같다면 break;
-> 중요도가 다르다면 현재 a,b를 q에 다시 삽입
[소스코드]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
|
/*
Programmers 42587 - 프린터
Created by haejun on 2020/03/31
*/
#include <string>
#include <vector>
#include<queue>
using namespace std;
int solution(vector<int> priorities, int location) {
int answer = 0;
priority_queue <int> pq;
queue<pair<int, int>> q;
for (int i = 0; i < priorities.size(); i++) {
q.push(make_pair(priorities[i], i));
}
while (true) {
// a == 중요도, b == 순서
int a = q.front().first;
int b = q.front().second;
q.pop();
pq.pop();
answer++;
if (b == location) break;
}
else {
q.push(make_pair(a, b));
}
}
return answer;
}
|
[해결 과정 중 실수한 부분 / 잡담]
pq와 q를 활용한 문제.
함수 형식으로 되어있어서 그런지, 백준 보다 프로그래머스가 난이도가 더 높게 느껴진다.
[관련 문제 혹은 비슷한 문제]
없음
'[PS] 문제풀이 > 프로그래머스' 카테고리의 다른 글
[ 프로그래머스 42746 ] 가장 큰 수 (C++) (0) | 2020.04.04 |
---|---|
[ 프로그래머스 42626 ] 더 맵게 (C++) (0) | 2020.04.04 |
[ 프로그래머스 12899 ] 124 나라의 숫자 (C++) (0) | 2020.03.31 |
댓글