LeetCode 문제 풀이

[LeetCode] 1046번 문제를 풀어보았다. (ft. java)

pantrom 2022. 4. 7. 19:52

2022년 04월 07일 목요일 - 오늘은 생일!!


오늘 올려볼 문제는 1046번 Last Stone Weight 이라는 문제이다.


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

leetcode 문제 사진

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

뭔가 깔삼하게 풀지는 모태서...


입력


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



풀이 및 코드


가장 큰 수 2개씩 없애서 마지막에 남는 값을 리턴하는 문제다.

수를 없애는 규칙은 두 수가 같을 때는 둘 다 없애고 아닐 때는 큰 수에서 작은 수를 뺀 값만 남긴다.


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

priority queue에 넣고 규칙대로 문제를 풀었다.


이제 코드를 봐보자!


풀이코드

class Solution {
    public int lastStoneWeight(int[] stones) {
         PriorityQueue<Integer> pq = new PriorityQueue<>(Collections.reverseOrder());

        for(int num : stones) pq.add(num);

        while(pq.size() > 1)
        {
            int n1 = pq.poll();
            int n2 = pq.poll();

            if(n1 == n2) continue;

            pq.add(n1 - n2);
        }

        return pq.size() == 0 ? 0 : pq.poll();
    }
}




제출 화면

leetcode 문제 맞았습니다


오늘 문제는 nlogn으로 풀어서 살짝 멋이 없었다.

내일은 멋있게 풀어봐야겠다!


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