Notice
Recent Posts
Recent Comments
Link
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

코딩응급실

프로그래머스: 튜플 본문

Java

프로그래머스: 튜플

Daeryuk Kim 2024. 3. 7. 15:14
import java.util.*;

class Solution {
    public int[] solution(String s) {
        // {"와 "}"를 제거
        // 2},{2,1},{2,1,3},{2,1,3,4
        // 각 집합을 구분하는 "},{"를 "-"로 대체하여 문자열을 파싱합니다.
        // 2-2,1-2,1,3-2,1,3,4
        s = s.substring(2, s.length()-2).replace("},{", "-");
        
        // 2
        // 2,1
        // 2,1,3
        // 2,1,3,4
        String[] arr = s.split("-");
        
        Arrays.sort(arr, new Comparator<String>() {
            @Override
            public int compare(String o1, String o2) {
                return o1.length() - o2.length();
            }
        });

        List<Integer> list = new ArrayList<>();
        for(String str : arr) {
            // 문자열을 ","를 기준으로 분리하여 문자열 배열 splitStr을 생성.
            String[] splitStr = str.split(",");
            
            for(String ss : splitStr) {
                // 문자열 ss를 정수 num으로 변환합니다.
                int num = Integer.parseInt(ss);
                // 만약 리스트에 num이 없다면, num을 리스트에 추가.
                if(!list.contains(num)) {
                    list.add(num);
                }
            }
        }
        // 리스트를 스트림으로 변환하고, 
        // 각 원소를 int로 매핑한 다음, 
        // 이를 배열로 변환하여 반환합니다.
        return list.stream().mapToInt(i -> i).toArray();
    }

    public static void main(String[] args) {
        String s = "{{2},{2,1},{2,1,3},{2,1,3,4}}";

        Solution sol = new Solution();
        int[] result = sol.solution(s);
        System.out.println(Arrays.toString(result));
    }
}

아래 풀이는 거의 감탄을 금치 못한다....ㅠㅠ

import java.util.*;

class Solution {
    public int[] solution(String s) {
        Set<String> set = new HashSet<>();
        // 문자열 s에서 '{'와 '}'를 공백으로 대체합니다. 그리고 앞뒤의 공백을 제거한 후, 
        // ' , '를 기준으로 문자열을 분리하여 배열 arr을 생성합니다.
        String[] arr = s.replaceAll("[{]", " ").replaceAll("[}]", " ").trim().split(" , ");
        Arrays.sort(arr, (a, b)->{return a.length() - b.length();});
        int[] answer = new int[arr.length];
        int idx = 0;
        for(String s1 : arr) {
        	// 문자열을 ','를 기준으로 분리하여 각 집합의 원소를 얻습니다.
            for(String s2 : s1.split(",")) {
            	// 원소를 set에 추가하고, 만약 새로운 원소가 추가되었다면 
                // 이를 결과 배열 answer에 추가합니다. 
                // 이때, set은 중복된 원소를 포함하지 않으므로, 새로운 원소만 추가됩니다.
                if(set.add(s2)) answer[idx++] = Integer.parseInt(s2);
            }
        }
        return answer;
    }


    public static void main(String[] args) {
        String s = "{{2},{2,1},{2,1,3},{2,1,3,4}}";

        Solution sol = new Solution();
        int[] result = sol.solution(s);
        System.out.println(Arrays.toString(result));
    }
}

'Java' 카테고리의 다른 글

프로그래머스: 피로도  (0) 2024.03.07
프로그래머스: 기능개발  (0) 2024.03.07
프로그래머스: [1차] 캐시  (0) 2024.03.07
프로그래머스: 의상  (0) 2024.03.07
프로그래머스: 행렬의 곱셈  (1) 2024.03.07