프로그래머스 프린터
본문 바로가기
알고리즘 모음집/New 알고리즘

프로그래머스 프린터

by KyeongMin 2020. 8. 19.
728x90
반응형

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

 

코딩테스트 연습 - 프린터

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

programmers.co.kr

#include <string>
#include <vector>
#include <queue>
#include <iostream>
using namespace std;
struct Data {
	int pri,idx;
};
int solution(vector<int> priorities, int location) {
	int answer = 0;
	int J = 0;
	vector<int>ret;//최종 나오는 순서 저장
	queue<Data>q;
	for (int i = 0; i < priorities.size(); i++) {
		q.push({ priorities[i],i });
	}
	while (!q.empty()) {
		Data J = q.front(); q.pop();// J문서
		int size = q.size();//현재 큐 사이즈
		int flag = 0;//우선순위 높은 문서 있는지 체크
		for (int i = 0; i < size; i++) {
			if (J.pri < q.front().pri) {
				flag = 1;
			}
				Data cJ = q.front(); q.pop();
				q.push(cJ);
	
		}
		if (flag==0) {
			ret.push_back(J.idx);// 출력 시키기
		}
		else {//우선순위가 높은게 있으면 제일 뒤로 보내기
			q.push(J);
		}
	}
	for (int i = 0; i < ret.size(); i++) {
		if (ret[i] == location) { answer = i+1; break; }
	}
	return answer;
}
int main(void) {

	cout << solution({ 2,1,3,2},2)<<endl;
	cout << solution({ 1, 1, 9, 1, 1, 1},0)<<endl;
	return 0;
}

이문제는 어떤식으로 구현을 할수 있는지를 잘 생각해야합니다. 저와같이 굳이 구조체를 만들어 사용할 필요는 없지만

좀더 직관성있게 구현 할 수 있다고 생각해서 구조체를써서 큐를 돌리듯이 해서 돌려서 일일이 비교해보고

출력이 가능한것이면 가능한것을 백터에 넣었습니다.

그리고 마지막에 그위치가 어디에 출력되는지 정도만 answer에 저장하여 문제를 풀이 했습니다.

이건 기초라 구현 가능하셔야합니다.

728x90
반응형

'알고리즘 모음집 > New 알고리즘' 카테고리의 다른 글

프로그래머스 k번째 수  (0) 2020.08.20
17142 연구소 3  (0) 2020.08.20
17141 연구소2  (0) 2020.08.19
16234 인구이동  (0) 2020.08.18
프로그래머스 기능개발  (0) 2020.08.13

댓글