카테고리
큐, 리스트
나만의 카테고리
정렬해야하는 큐
문제 링크
https://programmers.co.kr/learn/courses/30/lessons/12927
요점
- 배열이나 리스트를 사용하며 지속적으로 정렬을 해야한다면 PriorityQueue를 고려하자
- 제곱이나 수학적 함수를 사용할 시 자료형을 확인하자
참고 지식
- Priority Queue 사용법
- Math.*
풀이 (Java)
import java.util.*;
class Solution {
public long solution(int n, int[] works) {
long answer = 0;
PriorityQueue<Integer> workQueue = new PriorityQueue<>(Collections.reverseOrder());
for (int work : works) {
workQueue.offer(work);
}
for (int count = 0; count < n; count++) {
int topWork = workQueue.poll();
if (topWork == 0) break;
workQueue.offer(topWork - 1);
}
while(!workQueue.isEmpty()) {
answer += Math.pow(workQueue.poll(), 2);
}
return answer;
}
}
문제를 풀다보니 처음에는 Array를 정렬해서 가장 큰수를 차례로 줄여가며 처리하려고 했더니 코드도 복잡해지고
효율성 문제도 생겼습니다. 그래서 값을 줄이면서 동시에 정렬도 할 수 있게 PriorityQueue를 사용했습니다.
반응형
'Algorithm > Algorithm Test' 카테고리의 다른 글
[프로그래머스] 불량 사용자 (Java) (0) | 2020.11.22 |
---|---|
[프로그래머스] 뉴스 클러스터링 (Java) (0) | 2020.10.05 |
[프로그래머스] 최고의 집합 (Java) (0) | 2020.09.24 |
[프로그래머스] 소수 찾기 (Java) (0) | 2020.09.24 |
[프로그래머스] 보석 쇼핑 (Java) (0) | 2020.09.22 |