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. Y를for문
을 돌립니다. 이 때 X의 개수가 0개라면 사용할 수 없는 수이니 넘어가고 그것이 아니라면queue
에 넣어줍니다.
3.queue
는우선순위 큐
를 사용해주었는데 이를 통해 자동으로 정렬을 해줍니다.
4. 값을 다 넣었다면 큐에서 값을 하나씩 꺼내어서 정답 값에 넣어줍니다. 이 때queue
의size
가0
인 경우에는 짝꿍이 없다는 뜻으로"-1"
을 반환하고 맨 앞의 값이0
이라면0
을 반환 해줍니다.(만약 0을 처리를 해주지 않는다면"00"
과 같은 값이 나오게 됩니다.)
출처 : 프로그래머스 - 숫자 짝꿍
공감하며 읽었습니다. 좋은 글 감사드립니다.