728x90
map์ ๊ฐ๋ ์ผ๋ก index์ value๊ฐ ๋ชจ๋ ํ์ํ ๋ฌธ์ ์๋ค. Map์ ์ด์ฉํด์ Pair๋ฅผ ๋ง๋ค๊ณ ์ด๋ฅผ Queue์ ๋ฃ์ด์ฃผ๋ ๋ฐฉ์์ผ๋ก ์ ๊ทผ์ ํ๋ค๊ฐ ์ ๋์ง ์์๋ค. ๊ทธ๋์ queue ์์ฒด๋ฅผ ํ ์์ ๋ง๋ค์ด์ ํ ๋น์ ํ๋๋ ์ ํ๋ ธ๋ค. Queue๋ฅผ ์ฌ์ฉํด์ ํ ๋ฐฉ์ ๋ฌธ์ ๊ฐ ํ๋ ธ๋ค... ๋๋ฌด ๊ธฐ๋ถ์ด ์ข์๋ฐ...?
#include <string>
#include <queue>
#include <vector>
#include <algorithm>
#include <iostream>
using namespace std;
int solution(vector<int> priorities, int location) {
int answer = 0;
int index = 0;
queue<pair<int,int>> q;
// key์ index ๊ฐ์ ๋ฃ๊ณ value์ ์ฐ์ ์์๋ฅผ ๋ฃ์ด์ค๋ค.
for(int i =0 ; i < priorities.size() ; i++) {
q.push(make_pair(i,priorities[i]));
}
// ์ฐ์ ์์๋ฅผ ๋ด๋ฆผ์ฐจ์์ผ๋ก ์ ๋ ฌ
sort(priorities.begin(), priorities.end(), greater<int>());
while(true) {
// queue์ ๊ฐ์ฅ ์์ ์์๊ฐ ๊ฐ์ฅ ์ฐ์ ์์๊ฐ ๋์ ๊ฒ๊ณผ ๋์ผํ ๊ฒฝ์ฐ
if(q.front().second == priorities[index]) {
answer++;
index++;
if(q.front().first == location)
break;
q.pop();
}
// ๊ฐ์ง ์์ ๊ฒฝ์ฐ ๊ฐ์ฅ ์์ ์์๋ฅผ ์ ์ผ ๋ค๋ก ๋ฃ์ด์ค๋ค.
else {
int first = q.front().first;
int second = q.front().second;
q.pop();
q.push(make_pair(first, second));
}
}
return answer;
}
'๐ Self Study > ๐ Programmers' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
ํ๋ก๊ทธ๋๋จธ์ค (๋์คํฌ ์ปจํธ๋กค๋ฌ, ํ(Heap)) C++ (0) | 2022.01.05 |
---|---|
ํ๋ก๊ทธ๋๋จธ์ค (๊ฐ์ฅ ํฐ ์, ์ ๋ ฌ) C++ (0) | 2022.01.04 |
ํ๋ก๊ทธ๋๋จธ์ค (์ง์ง์ด ์ ๊ฑฐํ๊ธฐ, 2017 ํ์คํ์ด) C++ (0) | 2022.01.04 |
ํ๋ก๊ทธ๋๋จธ์ค (๊ธฐ๋ฅ ๊ฐ๋ฐ, ์คํ/ํ) C++ (0) | 2022.01.03 |
ํ๋ก๊ทธ๋๋จธ์ค (124 ๋๋ผ, ์ฐ์ต๋ฌธ์ ) C++ (0) | 2022.01.03 |