https://programmers.co.kr/learn/courses/30/lessons/42587
문제의 프린터가 작동하는 흐름 그대로 짰다.
1. 벡터의 맨 앞 요소를 뽑아냄
2. 우선순위가 더 높은 요소가 뒤에 있으면 벡터의 뒤에 push
(algorithm 헤더의 max_element를 이용하면 간단하게 작성 가능)
3. 그렇지 않으면 order++ 로 인쇄 횟수 증가
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
int solution(vector<int> priorities, int location) {
int answer = 0, order = 1;
while (true) {
int temp = priorities[0];
priorities.erase(priorities.begin());
int max_pri = *max_element(priorities.begin(), priorities.end());
if (temp < max_pri) {
priorities.push_back(temp);
if (location == 0) location = priorities.size() - 1;
else location--;
}
else {
if (location == 0) return order;
else {
order++;
location--;
}
}
}
}
max_element : 일정 범위 내에서 최댓값을 구하는데 유용한 함수
요즘 정신 없어서 알고리즘을 별로 못풀었는데 다시 꾸준히 풀어보자 !