-
[Algorithm] 프로그래머스 C++ : 프린터Algorithm 2020. 8. 9. 02:08
https://programmers.co.kr/learn/courses/30/lessons/42587#
그냥 프린터의 인덱스를 스택에 넣고 조건에 맞게 push&pop하면 된다. (우선순위값은 priorities[index]이런 식으로 접근하여 비교)
초반에 몇개 놓쳤다가 다시 생각한게
우선순위가 높은 출력물이 출력이 된 이후(큐에서 pop된 이후)에 가장 큰 우선순위값을 다시 구해줘야 한다는 점!
그래서 while가지고 최댓값을 매번 pop 할 때마다 구해줬다.
조건을 if/else로 크게크게 나눈 후에 디테일 코딩을 하는게 좋았을 듯.
Code
#include <string> #include <vector> #include <queue> #include <iostream> #include <algorithm> using namespace std; int solution(vector<int> priorities, int location) { int answer = 1; queue<int> q; for(int i=0; i<priorities.size(); i++) { q.push(i); } int max = *max_element(priorities.begin(), priorities.end()); while(1) { if(max != priorities[q.front()]) { int tmp = q.front(); q.pop(); q.push(tmp); } else { if(q.front()==location) { break; } else { q.pop(); answer++; max = 0; int iter = q.size(); while(iter--) { int tmp = q.front(); if(max < priorities[tmp]) { max = priorities[tmp]; } q.pop(); q.push(tmp); } } } } return answer; }
'Algorithm' 카테고리의 다른 글
[Algorithm] 프로그래머스 C++ : 디스크 컨트롤러 (0) 2020.08.14 [Algorithm] 프로그래머스 C++ : 더 맵게 (0) 2020.08.10 [Algorithm] 프로그래머스 C++ : 다리를 지나는 트럭 (2) 2020.08.07 [Algorithm] 프로그래머스 C++ : 기능개발 (0) 2020.08.06 [Algorithm] 프로그래머스 C++ : 주식가격 (0) 2020.08.05