Algorithm/programmers

[2019 카카오 인턴십]튜플

마닐라 2022. 4. 1. 23:59

📍 문제 설명

https://programmers.co.kr/learn/courses/30/lessons/64065

 

코딩테스트 연습 - 튜플

"{{2},{2,1},{2,1,3},{2,1,3,4}}" [2, 1, 3, 4] "{{1,2,3},{2,1},{1,2,4,3},{2}}" [2, 1, 3, 4] "{{4,2,3},{3},{2,3,4,1},{2,3}}" [3, 2, 4, 1]

programmers.co.kr

 

💡 접근

문자열 길이 기준으로 정렬해서 list에 넣으면 되는 문제였다.

HashSet을 사용하려다가 데이터 순서가 안 맞아서 ArrayList로 풀었는데 데이터 입력 순서 보장해주는 LinkedHashSet 사용하면 된다!

 

 

👩‍💻 코드

import java.util.*;

class Solution {
    public ArrayList<Integer> solution(String s) {
        s = s.replaceAll("\\{\\{", "")
                        .replaceAll("\\}\\}", "");
        String[] arr = s.split("},\\{");

        Arrays.sort(arr, new Comparator<>(){
            public int compare(String o1, String o2){
                return Integer.compare(o1.length(), o2.length());
            }
        });

        ArrayList<Integer> answer = new ArrayList<>();
        for(int i = 0; i < arr.length; i++) {
            String[] arr2 = arr[i].split(",");
            for(String str : arr2) {
                if(!answer.contains(Integer.parseInt(str))){
                    answer.add(Integer.parseInt(str));
                }
            }
        }

        return answer;
    }

    public static void main(String[] args) {
        Solution s = new Solution();
        s.solution("{{1,2,3},{2,1},{1,2,4,3},{2}}");
        s.solution("{{20,111},{111}}");
    }
}
//2 21 213 2134