<아이디어>
해당 문제의 핵심은 가변적으로 변하는 배열에서 높은 값을 가지는 것을 가져오는 걸 반복해야 한다는 점 이다.
처음에는 자동으로 값을 내림차순으로 정렬해주는 TreeSet<Integer>을 생각했으나 중복된 값이 제거 된다는 문제점이 있어 그 대안으로 조건식에 따라 값을 정렬해서 저장하는 PriorityQueue 우선순위 큐를 생각 할 수 있었다.
<우선 순위 큐>
https://velog.io/@gillog/Java-Priority-Queue%EC%9A%B0%EC%84%A0-%EC%88%9C%EC%9C%84-%ED%81%90
<정답 코드>
class Solution {
// 시간 복잡도 O(n) 공간 복잡도 O(n)
public int lastStoneWeight(int[] stones) {
PriorityQueue<Integer> pQueue = new PriorityQueue<>(Collections.reverseOrder());
for (int stone : stones)
pQueue.add(stone);
while(pQueue.size()>1){
int stone1 = pQueue.remove();
int stone2 = pQueue.remove();
int newStone = Math.abs(stone1-stone2);
if(newStone!=0)
pQueue.add(newStone);
}
return pQueue.size()==0?0: pQueue.peek();
}
}
'PS > Easy' 카테고리의 다른 글
1539. Kth Missing Positive Number (0) | 2023.03.07 |
---|---|
1523. Count Odd Numbers in an Interval Range (해석+풀이) (0) | 2023.02.13 |
509. Fibonacci Number (해석 + 풀이) (0) | 2023.02.12 |
507. Perfect Number (해석 + 풀이) (0) | 2023.02.05 |
506. Relative Ranks (해석 + 풀이) (0) | 2023.02.03 |