튜플
https://school.programmers.co.kr/learn/courses/30/lessons/64065 (opens in a new tab)
풀이
일단 시간 복잡도를 잘못생각했다. 100,000이라는 데이터를 봐서 O(N)으로 풀어야 하는줄 알았다. 하지만 문제를 자세히보니, 최대 500개의 튜플이라는 것을 알 수 있었다.
- 배열형태로 toArray를 사용할 때 타입을 명시해줘야 한다.
- Comparator를 사용하는 방법에 대해서 공부하자!!!
class Solution {
public int[] solution(String s) {
s = s.substring(1, s.length() - 1);
String[] tuples = s.split("},");
tuples = Arrays.stream(tuples).sorted(new Comparator<String>() {
public int compare(String s1,String s2) {
return Integer.compare(s1.length(), s2.length());
}
}).toArray(String[]::new);
Arrays.sort(tuples, (a, b) -> Integer.compare(a.length(), b.length()));
List<Integer> ans = new ArrayList<>();
for (String tuple : tuples) {
String temp = tuple.replace("{", "")
.replace("}", "");
String[] elements = temp.split(",");
for(String e: elements) {
int intE = Integer.parseInt(e);
if(!ans.contains(intE)) {
ans.add(intE);
}
}
}
return ans.stream()
.mapToInt(Integer::intValue)
.toArray();
}
}