Algorithm/Algorithm Test
[프로그래머스] 야근 지수 (Java)
MarrRang
2020. 9. 29. 13:25
카테고리
큐, 리스트
나만의 카테고리
정렬해야하는 큐
문제 링크
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를 사용했습니다.
반응형