Programmers - 프린터(Java)_21.06.15.화
문제
풀이
접근방법
처음에는 Stack을 이용하여서 풀려고 하였으나 구현하는 단계에서 막혔습니다. 그러던 와중에 우선순위큐에 대해서 떠올라서 검색을 참고하여서 구현을 시작했습니다.
- PriorityQueue를 Integer형으로 선언합니다.
-> 선언 시 Collections.reverseOrder()를 이용하여 문제의 조건에 맞게 우선순위를 결정합니다. - PriorityQueue에 배열의 값을 offer 합니다.
- While문을 선언하고 Queue가 Empty가 될 때까지 수행합니다.
- While문 안에서는 for문을 선언하여서 배열의 값과 Queue의 Peek() 값을 비교합니다. 동일하면 Poll을 선언하고 answer의 값을 1추가합니다.
- 그리고 location과 i의 값이 동일하다면 Queue를 초기화(clear())하고 While문을 종료합니다.
아래에 코드를 올렸습니다.
import java.util.*;
class Solution {
public int solution(int[] priorities, int location) {
int answer = 0;
PriorityQueue<Integer> prior = new PriorityQueue<>(Collections.reverseOrder());
for(int number:priorities){
prior.offer(number);
}
while(!prior.isEmpty()){
for(int i = 0; i < priorities.length; i++){
if(prior.peek() == priorities[i]){
prior.poll();
answer++;
if(location == i){
prior.clear();
break;
}
}
}
}
return answer;
}
}
Author And Source
이 문제에 관하여(Programmers - 프린터(Java)_21.06.15.화), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@ghroh0915/Programmers-프린터Java21.06.15.화저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)