문제 설명
해결과정
Solution.java
import java.util.*;
class Solution {
public String solution(String X, String Y) {
StringBuilder answer = new StringBuilder();
Map<String, Integer> xstr = new HashMap<>();
Map<String, Integer> ystr = new HashMap<>();
xstr = strToMap(X);
ystr = strToMap(Y);
answer.append(makeStr(xstr, ystr));
if(answer.toString().equals("")) {
answer.append("-1");
} else if (answer.toString().startsWith("0")) {
answer.setLength(0);
answer.append("0");
}
return answer.toString();
}
// cnt 숫자 만큼 문자열 출력
public String cntprint(String num, int cnt) {
StringBuilder result = new StringBuilder();
for(int i = cnt; i > 0; i--) {
result.append(num);
}
return result.toString();
}
// 9~0까지 숫자를 하나씩 넣기
public String makeStr(Map<String, Integer> xstr, Map<String, Integer> ystr) {
StringBuilder result = new StringBuilder();
for(int i = 9; i >= 0; i--) {
String key = i + "";
if(xstr.containsKey(key) && ystr.containsKey(key)) {
int cnt = 0;
// if(key.equals("0")) {
// result.append(0);
// } else {
cnt = xstr.get(key) < ystr.get(key) ? xstr.get(key) : ystr.get(key);
result.append(cntprint(key, cnt));
// }
}
}
return result.toString();
}
// String 각 인덱스의 요소 의 개수를 Map에 저장
public Map<String, Integer> strToMap (String str) {
Map<String, Integer> map = new HashMap<>();
for(String s : str.split("")){
if(map.containsKey(s)) {
int count = map.get(s);
map.put(s, count+1);
} else {
map.put(s, 1);
}
}
return map;
}
}
Java
복사