문제
문제링크
접근
- 순서에 대해 해석하는 것이 생각보다 오래걸렸다.
- 원소가 먼저 있는지 없는지를 판별해야 하니, 각 원소의 길이로 정렬 후, 원소의 원소를 가지고 처리하면 된다.
풀이
import java.util.*;
class Solution {
public int[] solution(String s) {
ArrayList<Integer> answer = new ArrayList<>();
s = s.substring(1, s.length() - 1);
String[] setsStr = s.replace("},{", "},,{").split(",,");
ArrayList<ArrayList<Integer>> sets = new ArrayList<>();
for (int i = 0; i < setsStr.length; i++) {
String str = setsStr[i];
str = str.substring(1, str.length() - 1);
String[] elements = str.split(",");
sets.add(new ArrayList<>());
for (int j = 0; j < elements.length; j++) {
sets.get(i).add(Integer.parseInt(elements[j]));
}
}
Collections.sort(sets, new Comparator<ArrayList<Integer>>() {
public int compare(ArrayList<Integer> o1, ArrayList<Integer> o2) {
return Integer.compare(o1.size(), o2.size());
}
});
for (int i = 0; i < sets.size(); i++) {
for (int j = 0; j < sets.get(i).size(); j++) {
if (!answer.contains(sets.get(i).get(j)))
answer.add(sets.get(i).get(j));
}
}
return answer.stream().mapToInt(Integer::intValue).toArray();
}
}