편리한 탐색을 위한 인덱스를 지정해주기 위해 pair를 이용해 만든 벡터에 priorities 값을 복사한다.
1. 대기목록 가장 앞의 문서보다 가중치가 큰 값이 있으면 가장 뒤로 보내준다.
1번을 반복하다 가장 앞의 문서보다 가중치가 더 큰 값이 없을 때
가장 앞의 문서를 제거하고 count를 증가시킨다.
이 때 가장 앞의 문서의 인덱스가 location과 같다면 반복문을 종료시키고 값을 반환한다.
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
|
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
int solution(vector<int> priorities, int location) {
int answer = 0;
vector<pair<int, int>> val;
for(int i = 0; i < priorities.size(); i++) {
val.push_back( { priorities[i], i } );
}
int flag = 0, count = 1;
while (priorities.size()) {
flag = 1;
for (int i = 1; i < val.size(); i++) {
if(val[0].first < val[i].first) {
val.push_back( { val[0].first, val[0].second} );
val.erase(val.begin());
flag = 0;
break;
}
}
if(flag == 1) {
if(val[0].second == location) {
answer = count;
break;
}
val.erase(val.begin());
count++;
}
}
return answer;
}
|
cs |
'problem solving' 카테고리의 다른 글
[프로그래머스]컬러링북 (0) | 2020.03.08 |
---|---|
[프로그래머스]문자열 압축 (0) | 2020.03.07 |
[프로그래머스]주식가격 (0) | 2020.03.07 |
[프로그래머스]쇠막대기 (0) | 2020.03.07 |
[프로그래머스]기능개발 (0) | 2020.03.07 |