*문제 출처는 프로그래머스에 있습니다.
문제 제목: 프로세스 (2단계)
문제 사이트: https://school.programmers.co.kr/learn/courses/30/lessons/42587
문제 설명
나의 풀이
#include <string>
#include <vector>
#include <queue>
#include <algorithm>
using namespace std;
int solution(vector<int> priorities, int location) {
int answer = 0;
queue<int> q;
for (int i : priorities) {
q.emplace(i);
}
sort(priorities.rbegin(), priorities.rend());
while (!q.empty()) {
if (q.front() == priorities[0]) {
answer++;
q.pop();
priorities.erase(priorities.begin());
if (location == 0) return answer;
else location--;
}
else {
q.emplace(q.front());
q.pop();
location--;
location = location < 0 ? q.size() - 1 : location;
}
}
return answer;
}
문제 설명 그대로 queue를 만들어서 rsort()를 한 벡터 배열과 같은 모양이 나올때까지 queue를 돌려주면 된다.
키포인트
1. 벡터 그대로 queue에 push해준다.
2. 우선 순위 순으로 뽑기 위해서 벡터를 내림차순으로 만들어준다.
3. 우선 순위 모습이 나올때까지 queue를 앞에서 삭제하고 뒤에 추가해주는 방식을 유지한다.
이 과정에서 location(언제 나오는지 알아야하는 원소)번째 원소가 섞이면 안되니깐 순서를 잘 따라가도록 해준다.
4. 그렇게 모양이 같아지면 앞에서부터 하나씩 뽑아서 location이 0이 될 때까지 answer++해준다.
※ 알아야 할 것
queue는 선입선출 방식으로 먼저 들어간 원소가 먼저 나오게 된다.
queue에서 emplace와 push는 같은 결과 값을 가져다 준다. 작동 원리는 조금 다르긴하다.
'코딩테스트(프로그래머스 & 백준) > 프로그래머스-C++' 카테고리의 다른 글
Programmers / 안전지대 / C++ (0) | 2024.02.28 |
---|---|
Programmers / 의상 / C++ (0) | 2024.02.27 |
Programmers / H-Index / C++ (0) | 2024.02.26 |
Programmers / n^2 배열 자르기 / C++ (0) | 2024.02.23 |
Programmers / 체육복 / C++ (0) | 2024.02.22 |