반응형
https://programmers.co.kr/learn/courses/30/lessons/42587
priorities 에 들어 있는 숫자들을 위치와 함께 기억해야 하기때문에 Pair라는 클래스를 선언했습니다.
idx에는 숫자들의 위치를 기억하고 value에는 숫자들을 저장하여 queue에 먼저 담았습니다.
그리고 priorities 에 있는 숫자들을 정렬하여 가장 큰 숫자가 우선순위가 가장 높기 때문에 queue에서 하나씩 빼가면서 비교했습니다. 우선순위가 가장 높은 숫자가 아니라면 queue에 다시 추가합니다.
queue에서 뺀 숫자들 중에 우선순위가 가장 큰 숫자를 만나게 되면 문제에서 주어진 location 값과 idx 를 비교합니다.
queue에서 우선순위가 가장 높은 숫자부터 빠지게 되면 answer 증가시켜주고 location과 idx가 같을 때의 answer을 정답으로 return 합니다.
import java.util.Arrays;
import java.util.Comparator;
import java.util.LinkedList;
import java.util.Queue;
class Solution {
static class Pair {
int idx;
int value;
Pair(int idx, int value){
this.idx=idx;
this.value=value;
}
}
public static int solution(int[] priorities, int location) {
int answer = 0;
Queue<Pair> q = new LinkedList();
for(int i=0; i<priorities.length; i++) {
q.offer(new Pair(i, priorities[i]));
}
Arrays.sort(priorities);
Out : for(int i=priorities.length-1; i>=0; i--) {
while(true) {
Pair p = q.poll();
if(priorities[i] != p.value) {
q.offer(p);
} else {
if(p.idx == location) {
answer++;
break Out;
} else {
answer++;
break;
}
}
}
}
return answer;
}
}
반응형
'알고리즘 > 문제풀이' 카테고리의 다른 글
[백준] 3055. 탈출 (0) | 2020.06.30 |
---|---|
[백준] 16401. 과자 나눠주기 (0) | 2020.06.08 |
[SWEA] 1251. [S/W 문제해결 응용] 4일차 - 하나로 (0) | 2020.04.16 |
[SWEA] 9760. Poker Game (2) | 2020.04.03 |
[백준] 1707. 이분 그래프 (0) | 2020.03.29 |