[프로그래머스 문제풀이] 9. 프린터

WIGWAG·2023년 1월 1일
0

프로그래머스

목록 보기
9/32

알고리즘 적용 후 위치와 값을 둘 다 확인해야 되는 문제일 때 인덱스만 들어있는 컨테이너로 쉽게 풀 수 있다.

큐에 인덱스를 모두 넣어준 뒤 무한 반복으로 값을 체크하고 값이 나올 때 리턴한다.

최댓값을 체크할 때는 max_element를 사용한다.
max_element는 최댓값의 이터레이터를 리턴한다.

앞에서 만든 큐에서 빼오는 값이 최댓값의 인덱스일 때 카운트를 증가시키고 값을 0으로 바꾼다.
만약 그 위치가 구하려는 위치일 때 카운트를 리턴한다.

최댓값이 아니라면 큐에서 빼내서 큐의 꼬리에 다시 넣는다.

#include <string>
#include <vector>
#include <algorithm>
#include <queue>
#include <iostream>

using namespace std;

int solution(vector<int> priorities, int location) {

	queue<int> indexes;

	for (size_t i = 0; i < priorities.size(); i++)
	{
		indexes.push(i);
	}

	int cnt = 0;

	while (true)
	{
		int front = indexes.front();
		if (priorities[front] == *max_element(priorities.begin(), priorities.end()))
		{
			++cnt;
			priorities[front] = 0;
			if (location == front)
				return cnt;
			indexes.pop();
		}
		else
		{
			indexes.pop();
			indexes.push(front);
		}
	}
}

int main()
{
	cout<<solution({ 1, 1, 9, 1, 1, 1 }, 0);
}

실행결과

5


프린터 문제 링크

profile
윅왁의 프로그래밍 개발노트

0개의 댓글