프로그래머스

[프로그래머스] 프로세스 (JAVA)

코 밑 2025. 6. 2. 04:57
Contents

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

 

프로그래머스

SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

문제

https://commit.tistory.com/14

설명

 

[자료구조] 스택과 큐

안녕하세요 코밑이에염! 다시 기여운 모루카쟝과 함께 돌아왔습니다! 오늘 알아볼 것은 스택과 큐에요! 자료구조를 공부하고 있는 여러분도 한번씩은 들어봤을 거라고 생각하고 있습니당 그림

commit.tistory.com

큐에 대한 설명

 

큐에서 대기중인 프로세스들을 하나씩 꺼내서 실행하고있다.

그런데 꺼내서 중요도를 확인했을 때 더 높은 중요도를 가진 프로세스가 큐 안에 남아있다면 다시 넣고 프로세스를 다시 뽑는다.

이 때 매개변수 location번째의 프로세스의 실행 순위를 반환하시오.

코드

import java.util.*;

// 프로세스(큐)
// 큐에서 대기중인 프로세스를 하나씩 꺼내서 실행하는데 중요도가 더 높은 프로세스가 대기중이라면 넣고 그 프로세스를 꺼내옴.
// location의 위치에 있는 프로세스가 실행되는 순서를 반환
// 매개변수 - priorities : 중요도 배열, location : 실행 순서를 알고싶은 프로세스의 위치
// ex) {2, 1, 3, 2}, 2 를 받음. 위치 2의 중요도는 3. 가장 먼저 실행됨.
class Solution {
	public int solution(int[] priorities, int location) {
		// 우선순위 큐 생성(내림차순) 후 넣어줌
		PriorityQueue<Integer> queue = new PriorityQueue<>(Collections.reverseOrder());
		for (int i : priorities) {
			queue.add(i);
		}

		// 순위
		int turn = 0;
		while (!queue.isEmpty()) {
			// 우선순위 큐와 매개변수 배열을 비교
			for (int i = 0; i < priorities.length; i++) {
				if (priorities[i] == queue.peek()) {
					queue.poll();
					turn++;
					// 배열의 순번과 location이 일치하면 반환
					if (i == location) {
						return turn;
					}
				}
			}
		}

		return turn;
	}
}

우선순위 큐라는 것이 있었다.

https://keeeeeepgoing.tistory.com/125

 

[Java] 우선순위 큐 (Priority Queue)

우선순위 큐(Priority Queue)란? 큐는 일반적으로 선입선출의 구조이지만 우선순위큐는 우선순위가 높은 순서대로 나가는 구조입니다. 우선순위큐는 최대힙 또는 최소힙을 이용하여 구현됩니다. 최

keeeeeepgoing.tistory.com

참고

우선순위 큐를 사용하니 쉽게 해결되는 문제였다.

큐와 매개변수로 주어진 배열을 차례대로 비교해서 location과 배열의 순번이 일치하는 순간 순서를 반환하면 된다.

 

https://github.com/qTeTp/Algo/tree/main/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4/2/42587.%E2%80%85%ED%94%84%EB%A1%9C%EC%84%B8%EC%8A%A4

 

Algo/프로그래머스/2/42587. 프로세스 at main · qTeTp/Algo

This is an auto push repository for Baekjoon Online Judge created with [BaekjoonHub](https://github.com/BaekjoonHub/BaekjoonHub). - qTeTp/Algo

github.com