🔗 문제 링크

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


👨🏻‍💻 내가 작성한 코드

import java.util.*;
class Solution {
    public ArrayList<Integer> solution(String s) {
        // 문자열 앞뒤 {{, }}를 자르고 },{ 을 -로 변환
        String str = s.substring(2, s.length()-2).replace("},{", "-");
        
        // -단위로 string 나누기
        String[] strArr = str.split("-");
        
        // String의 길이를 비교하여 정렬하기
        Arrays.sort(strArr, new Comparator<String>(){
            public int compare(String s1, String s2){
                return Integer.compare(s1.length(), s2.length());
            }
        });
        
        
        ArrayList<Integer> answer = new ArrayList<>();
        

        for (String sList: strArr){
            // 각각의 문자열을 ,로 나누고 값들을 int로 변환
            String[] temp = sList.split(",");   
            int[] temp2 = Arrays.stream(temp).mapToInt(Integer::parseInt).toArray();

            
            // 배열 길이가 1이면 바로 List에 값을 넣고 아니라면 
            //for문을 돌며 값이 List에 있는지 확인 후 없으면 추가
            if (temp2.length==1)
                answer.add(temp2[0]);
            else{
                for (int i=0; i< temp2.length; i++){
                    if (!answer.contains(temp2[i]))
                        answer.add(temp2[i]);
                }
            } 
        }
        
        return answer;
    }
}

👨🏻‍💻 다른 사람의 코드

import java.util.*;
class Solution {
    public int[] solution(String s) {
        Set<String> set = new HashSet<>();
        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(",")) {
                if(set.add(s2)) answer[idx++] = Integer.parseInt(s2);
            }
        }
        return answer;
    }
}


📝 결론

문제를 풀며 조건을 만들어 배열을 정렬하는 코드, String type의 배열을 int type의 배열로 변경하는 코드들의 경우는 작성하지 못하여 검색을 하여 이번에 다시 한번 알아가게되었다.
다음번에는 검색을 안하도록 외우고 넘어가도록 하자

// String의 길이를 비교하여 정렬하기
Arrays.sort(strArr, new Comparator<String>(){
	public int compare(String s1, String s2){
		return Integer.compare(s1.length(), s2.length());
	}
});

위의 코드는 앞으로는 아래와 같이 작성하도록 하자~~외우기도 좋을 듯
Arrays.sort(arr, (a, b)->{return a.length() - b.length();});


// String을 int로 변환
Arrays.stream(temp).mapToInt(Integer::parseInt).toArray();
int a = Integer.parseInt(s2);
profile
블로그 이전했습니다. -> https://seongwon.dev/

0개의 댓글