코딩테스트/프로그래머스

프로그래머스 문제풀이 - 프린터 (큐)

글로벌디노 2020. 10. 21. 22:46

프로그래머스 문제풀이

코딩테스트 연습 > 스택/큐 > 프린터

programmers.co.kr/learn/courses/30/lessons/42587

 

C++  Latest

/*
* 프로그래머스
* 코딩테스트 연습 > 스택/큐 > 프린터
https://programmers.co.kr/learn/courses/30/lessons/42587
*/

#include <iostream>
#include <queue>
using namespace std;

int solution(vector<int> priorities, int location)
{
    int answer = 0;
    queue<int> idxs;
    priority_queue<int> pq;

    for (int i = 0; i < priorities.size(); i++)
    {
        idxs.push(i);
        pq.push(priorities[i]);
    }

    while (true)
    {
        int idx = idxs.front();
        if (priorities[idx] == pq.top())
        {
            ++answer;
            if (idx == location)
                break;

            idxs.pop();
            pq.pop();
        }
        else
        {
            idxs.pop();
            idxs.push(idx);
        }
    }

    return answer;
}

int main()
{
    int res = solution({ 1, 1, 9, 1, 1, 1 }, 0);
    //int res = solution({ 2, 1, 3, 2 }, 2);
    cout << res << endl;

    return 0;
}

 

C++

#include <string>
#include <vector>
#include <deque>
#include <algorithm>
using namespace std;

int solution(vector<int> priorities, int location)
{
	int answer = 0;
	deque<int> dq;

	vector<int> sorted(priorities);
	sort(sorted.begin(), sorted.end());

	for (int i = 0; i < priorities.size(); i++)
		dq.push_back(i);

	while (1)
	{
		if (priorities[dq.front()] == sorted.back())
		{
			++answer;
			if (dq.front() == location)
				break;
			
			sorted.pop_back();
			dq.pop_front();
		}
		else
		{
			dq.push_back(dq.front());
			dq.pop_front();
		}
	}

	return answer;
}

 

정확성 테스트

테스트 1 통과 (0.01ms, 3.9MB)
테스트 2 통과 (0.01ms, 3.9MB)
테스트 3 통과 (0.01ms, 3.97MB)
테스트 4 통과 (0.01ms, 3.95MB)
테스트 5 통과 (0.01ms, 3.96MB)
테스트 6 통과 (0.01ms, 3.84MB)
테스트 7 통과 (0.01ms, 3.89MB)
테스트 8 통과 (0.02ms, 3.95MB)
테스트 9 통과 (0.01ms, 3.94MB)
테스트 10 통과 (0.01ms, 3.9MB)
테스트 11 통과 (0.01ms, 3.73MB)
테스트 12 통과 (0.01ms, 3.98MB)
테스트 13 통과 (0.01ms, 3.98MB)
테스트 14 통과 (0.01ms, 3.96MB)
테스트 15 통과 (0.01ms, 3.97MB)
테스트 16 통과 (0.01ms, 3.91MB)
테스트 17 통과 (0.01ms, 3.96MB)
테스트 18 통과 (0.01ms, 3.97MB)
테스트 19 통과 (0.01ms, 3.75MB)
테스트 20 통과 (0.01ms, 3.94MB)

채점 결과

정확성: 100.0

합계: 100.0 / 100.0