728x90
프린터
문제 설명
양방향 queue
즉, deque
를 이용하여 우선순위에 맞지 않은 작업들은 다시 대기열로 push_back
하여 요청한 문서가 몇번째인지 찾아낸다.
cpp은 작업들을 내림차순 정렬하여 최대값을 갱샌했고 python은 max
함수를 이용하여 매 탐색마다 최대값을 갱신해줬다.
문제 풀이
소스코드 : C++
#include<iostream>
#include<vector>
#include<deque>
#include<algorithm>
using namespace std;
int solution(vector<int> pri, int loc){
int answer = 0;
vector<int> tmp = pri;
deque<int> dq;
sort(tmp.begin(), tmp.end(),greater<int>());
// for(auto i :tmp) cout<<i<<endl;
for(auto i : pri)dq.push_back(i);
int idx =0;
while(!dq.empty()){
int cur = dq.front();
dq.pop_front();
if(cur==tmp[idx]){
answer++;
if(loc == 0)break;
else loc--;
idx++;
}
else{
if(loc == 0)loc = dq.size();
else loc--;
dq.push_back(cur);
}
}
return answer;
}
소스코드 : Python
def solution(pri, loc):
answer = 0
while len(pri):
M = max(pri)
cur = pri.pop(0)
if cur == M:
answer+=1
if loc == 0: break
else: loc -=1
else:
if loc == 0: loc = len(pri)
pri.append(cur)
return answer
728x90
300x250