https://school.programmers.co.kr/learn/courses/30/lessons/42587
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
[문제 풀이]
우선순위큐를 이용하여 문제를 풀었습니다.
우선순위 작업 배열과 위치가 주어 졌을 때, 해당 작업은 몇번째에 작업이 실행 되는지 찾는 문제입니다.
해당 문제를 풀기 위해서 우선순위큐를 이용해 작업 중요도를 넣어 주었고 배열을 순회하면서 큐와 비교하는 식으로 문제를 해결했습니다.
구현한 방식은 아래와 같습니다.
- 주어진 배열을 역순으로 우선순위큐에 삽이하여 준다.
- 큐의 앞쪽 원소와 배열의 값을 비교하면서 순회한다.
- 배열의 값이 큐의 값과 같다면 위치를 비교해주고 위치가 같으면 값을 반환
- 아니면 큐의 값을 poll해주고 다음 값과 비교한다.
- 이를 반복한다.
[JAVA]
import java.util.*;
class Solution {
public int solution(int[] priorities, int location) {
int answer = 1;
PriorityQueue<Integer> pq = new PriorityQueue<>(Collections.reverseOrder());
for(int item: priorities)
pq.add(item);
while(!pq.isEmpty()){
for(int i = 0 ; i < priorities.length; i++){
if(priorities[i] == pq.peek()){
if(i == location)
return answer;
pq.poll();
answer++;
}
}
}
return answer;
}
}
'algorithm > 프로그래머스' 카테고리의 다른 글
프로그래머스_디스크 컨트롤러(JAVA) (0) | 2022.11.17 |
---|---|
프로그래머스_다리를 지나는 트럭(JAVA) (0) | 2022.11.16 |
프로그래머스_올바른 괄호(JAVA) (0) | 2022.11.02 |
프로그래머스_전력망을 둘로 나누기(JAVA) (0) | 2022.11.01 |
프로그래머스_소수 찾기(JAVA) (0) | 2022.08.06 |