Algorithm
프로그래머스
Java
튜플

튜플

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();
    }
}