728x90
https://programmers.co.kr/learn/courses/30/lessons/42587?language=java
내가 사용한 자료구조 순서는 이랬따
배열 -> arrayList -> class를 이용한 queue -> priority queue
인덱스랑 우선순위를 저장하는 클래스를 만들어서 큐에 담고, 그걸로 구현하려고 했는데 그러자니 최댓값을 계속 구해오는게 좀 걸리는겨..
그래서 찾아보다 앗! 한게 우선순위 큐 였다!
우선순위 큐에 priority 저장하고 계속 꺼내면서 하면 되니까 그렇게 구현했어
사실 내 힘으로 온전히 구현한건 아니지만 일단 코드!
import java.util.*;
class Solution {
public int solution(int[] priorities, int location) {
int answer = 0;
PriorityQueue<Integer> pq = new PriorityQueue<>(Collections.reverseOrder()); //maxHeap 사용
for(int i=0;i<priorities.length;i++) {
pq.add(priorities[i]);
}
while(!pq.isEmpty()) {
for(int i=0;i<priorities.length;i++) {
if(pq.peek() == priorities[i]) {
pq.poll();
answer++;
if(i==location) {
return answer;
}
}
}
}
return answer;
}
}
코드 간단하지?
우선순위 큐 선언할때 Collections.reverseOrder() 사용해서 maxHeap으로 만들어줬어
우선순위 큐는 기본으로 minHeap이거든~
암튼 그렇게 해서 우선순위 기준으로 반복문 돌면서 최댓값이면 꺼내고 answer 더하고 이런식으로 했엉!
쉬운데 왜 혼자 못풀까... 꾸준히좀 하자 야미야..ㅠㅠ
암턴 빠잉!
728x90
'코딩테스트 > 프로그래머스' 카테고리의 다른 글
[스택/큐] 주식가격 - JAVA (0) | 2022.04.28 |
---|---|
[스택/큐] 다리를 지나는 트럭 - JAVA (0) | 2022.04.28 |
[스택/큐] 기능개발 - JAVA (0) | 2022.04.21 |
[해시] 위장 - JAVA (0) | 2022.04.20 |
[2019 카카오 개발자 겨울 인턴십] 튜플 - JAVA (0) | 2022.03.30 |
댓글