프로그래머스 - 숫자 짝꿍

greenTea·2023년 7월 24일
0
import java.util.*;

class Solution {
    public String solution(String X, String Y) {
        String answer = "";
        int[] numbers = new int[10];
        for (int i=0;i<X.length();i++) {
            numbers[X.charAt(i)-'0']++;
        }
        Queue<Integer> queue = new PriorityQueue<>(Comparator.reverseOrder());
        
        for (int i=0;i<Y.length();i++) {
            int num = Y.charAt(i)-'0';
            int count = numbers[Y.charAt(i)-'0'];
            if (count >0) {
                queue.offer(num);
                numbers[Y.charAt(i)-'0']--;
            }
        }
        if (queue.size() == 0)
            return "-1";
        if (queue.peek() == 0)
            return "0";
        StringBuilder sb = new StringBuilder();
        while(!queue.isEmpty()) {
            sb.append(queue.poll());
        }
        
        return sb.toString();
    }
}

🥳 무난한 코테 문제입니다.
1. 먼저 X를 쪼개서 개수를 세줍니다. numbers[X.charAt(i)-'0']를 통해 해당 값들의 개수를 세줍니다.
2. Yfor문을 돌립니다. 이 때 X의 개수가 0개라면 사용할 수 없는 수이니 넘어가고 그것이 아니라면 queue에 넣어줍니다.
3. queue우선순위 큐를 사용해주었는데 이를 통해 자동으로 정렬을 해줍니다.
4. 값을 다 넣었다면 큐에서 값을 하나씩 꺼내어서 정답 값에 넣어줍니다. 이 때 queuesize0인 경우에는 짝꿍이 없다는 뜻으로 "-1"을 반환하고 맨 앞의 값이 0이라면 0을 반환 해줍니다.(만약 0을 처리를 해주지 않는다면 "00"과 같은 값이 나오게 됩니다.)

출처 : 프로그래머스 - 숫자 짝꿍

profile
greenTea입니다.

1개의 댓글

comment-user-thumbnail
2023년 7월 24일

공감하며 읽었습니다. 좋은 글 감사드립니다.

답글 달기