Study hard

(c++)프로그래머스 코딩테스트 연습 - 프린터 본문

프로그래머스/스택,큐

(c++)프로그래머스 코딩테스트 연습 - 프린터

Nimgnoej 2020. 10. 23. 15:13

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

 

코딩테스트 연습 - 프린터

일반적인 프린터는 인쇄 요청이 들어온 순서대로 인쇄합니다. 그렇기 때문에 중요한 문서가 나중에 인쇄될 수 있습니다. 이런 문제를 보완하기 위해 중요도가 높은 문서를 먼저 인쇄하는 프린

programmers.co.kr

[풀이]

deque를 써서 풀었다.

요청한 문서의 위치가 0일 때 다른 문서들의 중요도보다 크면 break하는 방법으로 구현하였다.

 

#include <string>
#include <vector>
#include <deque>

using namespace std;

int solution(vector<int> priorities, int location) {
	int answer = 0;
	deque<int>p;
	for (int i = 0; i < priorities.size(); i++) {
		p.push_back(priorities[i]);
	}
	while (1) {
		int cdoc = p.front();
		p.pop_front();
		bool flag = true;
		for (int i = 0; i < p.size(); i++) {
			if (cdoc < p[i]) {
				flag = false;
				break;
			}
		}
		//가장 앞에 있는 문서가 가장 중요도가 높은 문서면
		if (flag == true) {
			answer++;
			//가장 앞에 있는 문서가 요청한 문서면
			if (location == 0) {
				break;
			}
			else
				location--;
		}
		//가장 앞에 있는 문서가 가장 중요도가 높은 문서가 아니면
		else {
			p.push_back(cdoc);
			if (location == 0)
				location = p.size() - 1;
			else
				location--;
		}
	}
	return answer;
}