import java.util.*;
class Solution {
public String solution(String X, String Y) {
Map<Character, Integer> map = new HashMap<>();
for (char c : Y.toCharArray()) {
map.put(c, map.getOrDefault(c, 0) + 1);
}
StringBuilder sb = new StringBuilder();
for (char c : X.toCharArray()) {
if (map.containsKey(c) && map.get(c) > 0) {
sb.append(c);
map.put(c, map.get(c) - 1);
}
}
if (sb.length() == 0) return "-1";
if (sb.toString().matches("0+")) return "0";
char[] chars = sb.toString().toCharArray();
Arrays.sort(chars);
return new StringBuilder(new String(chars)).reverse().toString();
}
}
처음엔 이중반복으로 했는데 예상대로 시간초과로 실패했다.
시간을 줄일 아이디어는 Y 의 값들과 그 수를 Map 으로 만들고
X를 순회하며 Map 에 해당 값이 있고 그 수가 1 이상이면 StringBuilder 에 append 하고 Map 의 value 는 -1 해주는 방식으로 만들었다.
통과했다 히히