inblog logo
|
LHS's Study Space
    알고리즘문제풀기프로그래머스

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

    lhs's avatar
    lhs
    Nov 20, 2024
    [프로그래머스] 야근 지수(12927)
    Contents
    1. 문제 풀이 아이디어2. 나의 정답 코드3. 정리
    school.programmers.co.kr
    https://school.programmers.co.kr/learn/courses/30/lessons/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문을 사용하여 n이 0보다 큰 동안 que 안의 가장 큰 값에서 1을 뺀 후 다시 넣는 과정을 반복한다.
    • 마지막으로 que에 있는 값들을 제곱하여 합산하면 답을 구할 수 있다.
    Share article

    LHS's Study Space

    RSS·Powered by Inblog