코딩테스트/프로그래머스

[프로그래머스]튜플 - Java

GAEBAL 2022. 6. 22. 23:42
728x90

문제

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

 

 

풀이

문자열이 주어지는 규칙?을 잘 보고 필요한 원소들로 어떻게 잘 나눌 것인지를 고민해봐야 한다!
String 배열을 String.length()의 오름차순으로 정렬해서 비교하고 넣어주면 순서에 맞게 들어간다

여기서 어떻게 String.length()의 오름차순으로 정렬하냐!!!!!!!!!!

 

// String 배열을 String.length()의 오름차순으로 정렬!
Arrays.sort(strArray, Comparator.comparing(String::length));

얘임! 잘 알아두자

 

내림차순은

Arrays.sort(strArray, Comparator.comparing(String::length, Comparator.reverseOrder()));

얘임

 

자세한건 주석으로!

 

 

코드

// 코딩테스트 연습 - 2019 카카오 개발자 겨울 인턴십 - 튜플
// https://programmers.co.kr/learn/courses/30/lessons/64065

package PROGRAMMERS.level2;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Comparator;

public class Num64065_튜플 {
    private static class Solution {
        private int[] solution(String s) {
            s = s.substring(2, s.length() - 2).replace("},{", "-");

            String[] strArray = s.split("-");

            // String 배열을 String.length()의 오름차순으로 정렬!
            Arrays.sort(strArray, Comparator.comparing(String::length));

            ArrayList<Integer> arrayList = new ArrayList<>();

            for (int i = 0; i < strArray.length; i++) {
                String str = strArray[i];
                String[] temp = str.split(",");

                for (int j = 0; j < temp.length; j++) {
                    int tempInt = Integer.parseInt(temp[j]);

                    if (!arrayList.contains(tempInt)) { // 없는 원소면 추가
                        arrayList.add(tempInt);
                    }
                }
            }

            int[] answer = new int[arrayList.size()];

            for (int i = 0; i < arrayList.size(); i++) {
                answer[i] = arrayList.get(i);
            }

            return answer;
        }
    }

    public static void main(String[] args) {
        Solution sol = new Solution();
        System.out.println(Arrays.toString(sol.solution("{{2},{2,1},{2,1,3},{2,1,3,4}}")));
        System.out.println(Arrays.toString(sol.solution("{{1,2,3},{2,1},{1,2,4,3},{2}}")));
        System.out.println(Arrays.toString(sol.solution("{{20,111},{111}}")));
        System.out.println(Arrays.toString(sol.solution("{{123}}")));
        System.out.println(Arrays.toString(sol.solution("{{4,2,3},{3},{2,3,4,1},{2,3}}")));
    }
}
728x90