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를 사용했습니다.

 


알고리즘 초보가 정리한 글입니다
더 좋은 방법이나 코드에 대한 코멘트 언제나 환영합니다!

 

반응형