본문 바로가기

problem solving

[프로그래머스]프린터

편리한 탐색을 위한 인덱스를 지정해주기 위해 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<intint>> 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