[프로그래머스] 야근 지수(12927)

lhs's avatar
Nov 20, 2024
[프로그래머스] 야근 지수(12927)
 

1. 문제 풀이 아이디어

  • PriorityQueue를 사용하여 문제를 해결할 수 있다.

2. 나의 정답 코드

class Solution { public long solution(int n, int[] works) { long answer = 0; PriorityQueue<Integer> que = new PriorityQueue<>(Comparator.reverseOrder()); for (int i : works) { que.add(i); } while (n > 0) { int cur = que.poll(); if (cur == 0) break; que.add(cur - 1); n--; } for (int i : que) { int cur = Math.max(i, 0); answer += cur * cur; } return answer; } }

3. 정리

  • reverseOrder를 사용하여 가장 큰 수부터 나오도록 하는 PriorityQueue 자료형 que를 생성하고, works의 값을 넣는다.
  • while문을 사용하여 n0보다 큰 동안 que 안의 가장 큰 값에서 1을 뺀 후 다시 넣는 과정을 반복한다.
  • 마지막으로 que에 있는 값들을 제곱하여 합산하면 답을 구할 수 있다.
Share article

LHS's Study Space