프로그래머스 프린터

jathazp·2021년 6월 29일
0

algorithm

목록 보기
42/57
post-thumbnail

문제링크

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

문제

풀이

문제의 프린터가 작동하는 흐름 그대로 짰다.
1. 벡터의 맨 앞 요소를 뽑아냄
2. 우선순위가 더 높은 요소가 뒤에 있으면 벡터의 뒤에 push
(algorithm 헤더의 max_element를 이용하면 간단하게 작성 가능)
3. 그렇지 않으면 order++ 로 인쇄 횟수 증가

코드

#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;


int solution(vector<int> priorities, int location) {
	int answer = 0, order = 1;

	while (true) {
		
		int temp = priorities[0];
		priorities.erase(priorities.begin());
		int max_pri = *max_element(priorities.begin(), priorities.end());

		if (temp < max_pri) {
			priorities.push_back(temp);
			if (location == 0) location = priorities.size() - 1;
			else location--;
		}
		else {
			if (location == 0) return order;
			else {
				order++;
				location--;
			}
		}
		
	}
}

후기

max_element : 일정 범위 내에서 최댓값을 구하는데 유용한 함수

요즘 정신 없어서 알고리즘을 별로 못풀었는데 다시 꾸준히 풀어보자 !

0개의 댓글