2022년 12월 27일 화요일 - 3일만에 출근... 힘드러...


오늘 올려볼 문제는 2279번 Maximum Bags With Full Capacity of Rocks 이라는 문제이다.


사진을 클릭하면 해당 문제로 이동합니다.

leetcode 문제 사진

오늘도 LeetCode 사이트 오늘의 문제를 가지고 왔다.

생각해보니 더 효율적으로 짤 수 있었다


입력


사진에서도 볼 수 있듯이 int 배열 2개와 int 값 1개가 입력으로 들어온다.



풀이 및 코드


주어진 가방들에 돌을 담을 수 있는 개수와 돌이 담겨져 있는 개수가 있다.

이 때 추가적인 돌 n개가 있을 때 이를 배분하여 담았을 때 가장 많은 꽉 채워진 가방을 구하라는 문제이다.


오늘은 처음부터 정답을 생각해냈다.

가방의 용량과 가방에 든 돌의 개수의 차이를 구하여 차이가 작은 것부터 채워나가는 방식으로 문제를 풀었다.


이제 코드를 봐보자!


풀이코드

class Solution {
    public int maximumBags(int[] capacity, int[] rocks, int additionalRocks) {
        var pq = new PriorityQueue<Integer>();
        int result = 0;
        
        for(int i = 0; i < rocks.length; i++) pq.add(capacity[i] - rocks[i]);
        
        while(!pq.isEmpty()) {
            additionalRocks -= pq.poll();
            
            if(additionalRocks < 0) break;
            result++;
        }
        
        return result;
    }
}




제출 화면

leetcode 문제 맞았습니다


생각해보니 그냥 pq를 사용하지 않고 정렬 한 번 하는게 훨씬 더 효율적이었을 것이다.

하지만 처음 푼건 이렇게 푼 것이므로... 머리에 잘 기억해두는 것으로 만족해야겠다.


내일도 문제를 풀어서 블로그에 글을 쓸 수 있으면 좋겠다.

+ Recent posts