[99클럽 코테 스터디 29일차 TIL] LeetCode 2231. Largest Number After Digit Swaps by Parity

말하는 감자·2024년 11월 25일
0
post-thumbnail

99클럽 코테 스터디 29일차 TIL

💙 JAVA 비기너

📌 오늘의 학습 키워드

  • 힙(우선순위 큐)

📌 공부한 내용

📍 오늘의 문제

📍 작성 코드

class Solution {
    public int largestInteger(int num) {
        PriorityQueue<Integer> oddHeap = new PriorityQueue<>(Collections.reverseOrder());
        PriorityQueue<Integer> evenHeap = new PriorityQueue<>(Collections.reverseOrder());

        String[] numbers = String.valueOf(num).split("");

        for(String numStr : numbers) {
            int number = Integer.parseInt(numStr);

            if(number % 2 == 0) {
                evenHeap.add(number);
            } else {
                oddHeap.add(number);
            }
        }

        String answer = "";
        for(String numStr : numbers) {
            int number = Integer.parseInt(numStr);
            if(number % 2 == 0) answer += String.valueOf(evenHeap.poll());
            else answer += String.valueOf(oddHeap.poll());
        }

        return Integer.parseInt(answer);

    }
}

📌 오늘의 회고

오늘은 너무 피곤해서 하지 말까 했으나 내일 회식이라서 내일은 진짜 못할 것 같아서 새벽에 열심히 작성해본다...

문제의 요점은 홀수는 홀수끼리, 짝수는 짝수끼리 자리를 바꿔서 가장 큰 수를 만들어내라!!이다.

그래서 홀수는 홀수끼리 oddHeap 힙에, 짝수는 짝수끼리 evenHeap 힙에 저장하여 내림차순으로 정렬하였다.

그리고 다시 num을 문자열 배열로 저장한 numbers를 하나씩 돌며 홀수이면 oddHeap에서 짝수면 evenHeap에서 값을 가져오도록 하여 홀수와 짝수 자리를 지키도록 해줬다.

profile
나는 말하는 감자다

0개의 댓글