스택/큐 - 프린터
https://programmers.co.kr/learn/courses/30/lessons/42587
코딩테스트 연습 - 프린터
일반적인 프린터는 인쇄 요청이 들어온 순서대로 인쇄합니다. 그렇기 때문에 중요한 문서가 나중에 인쇄될 수 있습니다. 이런 문제를 보완하기 위해 중요도가 높은 문서를 먼저 인쇄하는 프린
programmers.co.kr
prior벡터 안에 받은 입력과 인덱스를 같이 저장해두고,
prior의 첫번째요소보다 큰것이 있으면 , 첫번째요소를 마지막에 넣고 첫번째자리에서는 지운다.
처음 자리에 한해서 모든 경우를 계속 봐야하므로 , 한번 push erase가 일어나면 i=0으로해줘서 다시 비교한다. result 벡터에는 반복문이 한번 끝날때마다 prior의 첫번째 요소를 넣어준다.
인덱스는 0부터 시작하지만 결과 값은 1부터 시작하므로 , location으로 주어진 값과 result[i].second의 인덱스가 같을 때 i+1가 답이 된다.
코드
#include <string>
#include <vector>
#include <iostream>
using namespace std;
int solution(vector<int> priorities, int location) {
int answer = 0;
vector<pair<int,int>> prior;
vector<pair<int,int>> result;
for(int i=0;i<priorities.size();i++) prior.push_back(make_pair(priorities[i], i));
while(!prior.empty()){
for(int i=1;i<prior.size();i++){
if(prior[0].first < prior[i].first){
prior.push_back(prior[0]);
prior.erase(prior.begin());
i=0;
}
}
result.push_back(prior[0]);
prior.erase(prior.begin());
}
for(int i=0;i<priorities.size();i++){
if(location == result[i].second) {
return i+1;
}
}
return answer;
}
int main(int argc, const char *argv[])
{
vector<int> priorities;
int location = 2;
priorities.push_back(2);
priorities.push_back(4);
priorities.push_back(8);
priorities.push_back(2);
priorities.push_back(9);
priorities.push_back(3);
priorities.push_back(3);
solution(priorities, location);
return 0;
}
'코딩테스트 연습 > programmers' 카테고리의 다른 글
[프로그래머스] 해시 - 전화번호 목록 (0) | 2022.12.30 |
---|---|
[Programmers] 스택/큐 > 주식 가격 (0) | 2022.04.01 |
[Programmers] 스택/큐 > 다리를 지나는 트럭 (0) | 2022.04.01 |
[Programmers] 스택/큐 - 기능개발 (0) | 2022.04.01 |
[Programmers] sort > 가장 큰 수 (0) | 2022.04.01 |