반응형
programmers.co.kr/learn/courses/30/lessons/42587
문제 접근법
- 순서와 우선순위를 저장할 queue와 우선순위 순서대로 정렬할 때 사용할 priority_queue를 준비한다.
- for문을 priorities의 길이만큼 사용하여 queue에 순서와 우선순위를 push하고 priority_queue에 priorites의 값들을 넣어준다.
- queue의 맨 앞값의 second 값이 priority_queue의 최상단 값과 같지않다면 자신 보다 우선순위가 높은게 존재한다는 뜻이므로 queue의 데이터를 queue에 다시 넣어주고 pop을 한다.
- queue의 맨 앞값의 second 값이 priority_queue의 최상단 값과 같다면 queue의 맨 앞값의 first와 location 값이 같은지 검사한다.
- 같을 경우 올바른 답이므로, answer 값을 출력한다. 단, location이 0부터 시작하므로 실제 값은 1을 더해주어야 한다.
- first값과 location 값이 다를경우 queue와 priority_queue에서 pop을 실행한다.
- 내부에 이것보다 중요한 문서가 없기 때문이다.
- 이를 queue가 존재하는 동안 계속 반복하여 찾으면 된다.
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
38
39
40
41
42
|
#include <string>
#include <vector>
#include <queue>
using namespace std;
int solution(vector<int> priorities, int location) {
int answer = 0;
int len = priorities.size();
queue<pair<int, int>> q;
priority_queue<int> pq;
for(int i = 0; i < len; i++)
{
q.push(make_pair(i, priorities[i]));
pq.push(priorities[i]);
}
while(!q.empty())
{
if (q.front().second == pq.top())
{
if (q.front().first == location)
{
return answer + 1;
}
else
{
answer++;
q.pop();
pq.pop();
}
}
else
{
q.push(q.front());
q.pop();
}
}
return answer;
}
|
cs |
반응형
'프로그래머스 문제풀이 > LEVEL 2' 카테고리의 다른 글
[프로그래머스 / Level 2] 스킬트리 (0) | 2020.09.25 |
---|---|
[프로그래머스 / Level 2] 문자열 압축 (0) | 2020.09.25 |
[프로그래머스 / Level 2] 기능개발 (0) | 2020.09.22 |
[프로그래머스 / Level 2] 위장 (0) | 2020.09.21 |
[프로그래머스 / Level 2] 전화번호 목록 (0) | 2020.09.21 |