프로그래머스 - 프린터

phoenixKim·2021년 8월 8일
0

풀이전략

  • 문제를 읽어보면, priority가 가장 큰 친구부터 빼야되는 것을 확인할 수 있다.

1) 2,1,3,2 에서 제일 큰 친구가 3이므로 맨 앞의 친구 2를 빼서 꼬리에다가
추가를 해야한다. -> queue stl을 사용하면 되겟다. 라고 생각함.

2) 우선 순위가 가장 큰 친구부터! 이므로 priority_que stl을 사용해야 겠다고 생각함.

3) 1, 2번을 진행 중에 location의 값과 비교를 해야한다. location은 인덱스를 뜻하므로 고정적인 값이다라는 것을 유추했고,
추가적으로 priority값을 계속 유지하면서 꼬리에 붙여야 하는 것을 통해
pair 를 사용해야 겠다고 생각할 수 있다.

=> 힌트들을 가지고 코드로 구현하자!

소스코드

#include <string>
#include <vector>
#include <queue>

using namespace std;

int solution(vector<int> priorities, int location) {
    int answer = 0;
    
    priority_queue<int> pq;
    queue<pair<int, int>> q;
    
    for(int i = 0; i < priorities.size(); i++)
    {
        q.push({priorities[i], i});
        pq.push(priorities[i]);
    }
    
    while(!pq.empty())
    {
        if(pq.top() == q.front().first)
        {
            answer++;
            if(location == q.front().second)
                return answer;
            q.pop();
            pq.pop();
        }
        else
        {
            q.push(q.front());
            q.pop();
        }
    }
    
    
    
    return answer;
}
profile
🔥🔥🔥

0개의 댓글

관련 채용 정보