|
์ฝ๋ ์์ฑํ๊ธฐ
#include<string>
#include<vector>
#include<queue>
#include<utility>
#include<algorithm>
using namespace std;
typedef pair<int, bool>p; //p = int, boolํ์ ์๋ฃํ์ผ๋ก ์ฌ์ ์
int solution(vector<int> priorities, int location) {
deque<p>q; //int, bool ํ์ ๋ด๊ณ ์๋ Deque
int answer = 1;
for (int i = 0; i < priorities.size(); i++) q.push_back({ priorities[i],false }); //deque์ ์ฃผ์ด์ง ๋ฌธ์์ ์ค์๋ ๊ฐ ์ถ๊ฐ
q[location].second = true; // ์ฐพ๊ณ ์ ํ๋ ๊ฐ์๋ง second๋ฅผ true๊ฐ์ผ๋ก
sort(priorities.begin(), priorities.end()); // ๋ฌธ์์ ์ค์๋ ์ค๋ฆ์ฐจ์ ์ ๋ ฌ
while (1) {
if (q.front().first == priorities.back()) { //q.front๊ฐ์ด ์ค์๋๊ฐ ๊ฐ์ฅ ๋์๊ฐ์ด๋ฉด์
if (q.front().second)return answer; // second๊ฐ์ด true๋ผ๋ฉด(=๋ด๊ฐ ์ฐพ๊ณ ์ ํ๋ ๋ฌธ์๋ผ๋ฉด) answer return
q.pop_front();//์ฐพ๊ณ ์ ํ๋ ๋ฌธ์๊ฐ ์๋๋ผ๋ฉด q์ ๋ฆฌ์คํธ์์ ์ ๊ฑฐ ํ answer +1
priorities.pop_back();
answer++;
continue;
}
p tmp = q.front(); //q.front๊ฐ์ด ์ค์๋๊ฐ ๊ฐ์ฅ ๋์ ๊ฐ์ด ์๋๋ผ๋ฉด pop ํ ๋งจ ๋ค์ ๋ค์ push
q.pop_front();
q.push_back(tmp);
}
}
C++
๋ณต์ฌ
|
์ฝ๋ ์ค๋ช
ํ๊ธฐ
Queue๋ฅผ ์ด์ฉํ๋ฉด ์ฝ๊ฒ ํ ์ ์๋ค
1.
์ฃผ์ด์ง ์ค์๋ ๊ฐ๊ณผ ์ํ๋ ๋ฌธ์๋ ๋ฐ๋ก ๊ธฐ๋กํ๋ฉด์ Queue์ ๋ฃ๋๋ค
2.
๋ฌธ์์ ์ค์๋ ์ ๋ ฌ
3.
๋ด๊ฐ ์ฐพ๊ณ ์ ํ๋ ๊ฐ(True๋ก ๊ธฐ๋กํด๋ ๊ฐ)์ด ๋์ฌ ๋ ๊น์ง ํ์ ์ํจ๋ค
a.
๋จ, Queue์์ ์ค์๋๊ฐ ๊ฐ์ฅ ๋์ ๊ฐ์ด ๋์ค๋ฉด popํ๋ฉฐ answer+1
b.
๊ฐ์ฅ ๋์ ๊ฐ์ด ์๋๋ผ๋ฉด pop ํ, ๋ค์ ๋ค์ push