1. 문제 풀이 아이디어
- 문자열
X
와Y
에서 각 숫자의 등장 횟수를 세어 배열에 저장한 후, 등장 횟수의 최소값을 따로 저장해 문제를 해결한다.
2. 나의 정답 코드
class Solution {
public String solution(String X, String Y) {
StringBuilder stringBuilder = new StringBuilder();
int[] num1 = new int[10];
int[] num2 = new int[10];
int[] result = new int[10];
for (char c : X.toCharArray()) {
num1[c - '0']++;
}
for (char c : Y.toCharArray()) {
num2[c - '0']++;
}
for (int i = 0; i < 10; i++) {
result[i] = Math.min(num1[i], num2[i]);
}
boolean chk = false;
for (int i = 9; i >= 0; i--) {
if (result[i] > 0)
chk = true;
if (i == 0 && stringBuilder.length()==0) {
stringBuilder.append(0);
break;
}
for (int j = 0; j < result[i]; j++) {
stringBuilder.append(i);
}
}
return chk ? stringBuilder.toString() : "-1";
}
}
3. 정리
- 문자열
X
와Y
에서 각 숫자의 등장 횟수를 세어num1
과num2
배열에 저장한다.
- 두 문자열에서 등장 횟수의 최소값을
result
배열에 저장한다.
result
배열을 역순으로 탐색하며 숫자를 결과 문자열에 추가한다.- 숫자가 없으면 1을 반환한다.
- 결과가
0
으로만 이루어진 경우0
을 반환한다.
Share article