💡 문제
💬 입출력 예시
📌 풀이(소스코드)
import java.util.ArrayList;
import java.util.Comparator;
class Solution {
public String solution(String X, String Y) {
String answer = "";
int[] x = new int[10];
int[] y = new int[10];
for (int i = 0; i < X.length(); i++) {
x[X.charAt(i) - '0']++;
}
for (int i = 0; i < Y.length(); i++) {
y[Y.charAt(i) - '0']++;
}
ArrayList<Integer> list = new ArrayList<Integer>();
for (int i = 0; i < 10; i++) {
while (x[i] > 0 && y[i] > 0) {
list.add(i);
x[i]--;
y[i]--;
}
}
if (list.size() == 0) {
answer = "-1";
}
else {
list.sort(Comparator.reverseOrder());
int sum = 0;
StringBuilder sb = new StringBuilder();
for(int i = 0; i < list.size(); i++) {
sum += list.get(i);
sb.append(list.get(i).toString());
}
if (sum == 0) {
answer = "0";
}
else {
answer = sb.toString();
}
}
return answer;
}
}
📄 해설
- 0 부터 9 까지의 등장 횟수를 저장할 배열
x
와 y
를 선언하고, 문자열을 순회하며 등장 횟수를 증가시킴
x
와 y
에 대하여, 등장 횟수가 둘 다 0 이 아닐때까지 짝꿍 리스트 list
에 추가하고, 해당 인덱스의 값을 감소시킴
- 리스트를 확인하여 결과값 처리
- 리스트 크기가 0인 경우 짝꿍이 없는 것으로 간주 ->
answer = -1
- 리스트 내림차순 정렬 후 앞 숫자부터
answer
에 추가하며, 그 합을 계산하고, 합이 0인 경우 answer
는 0
- 1 과 2에 해당하지 않을 경우
answer
는 짝꿍이 완성됨
- 최초에는
answer += list.get(i).toString();
으로 코드를 작성하였으나, 시간 초과가 발생하여 StringBuilder
클래스를 사용하였음