잡다한 배똥월드

728x90
코딩 테스트 풀이 체크리스트
2시간 내에 풀었는가? O
본인의 실력으로 풀었는가? O

 

 

코딩테스트 연습 - 튜플

"{{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

 

 

 

 

 

import java.util.*;
class Solution {
    public int[] solution(String s) {
        ArrayList<Integer> answer = new ArrayList<>();
        
        //제일 앞의 {{와 맨 뒤의 }}를 제외하고 },{로 구분
        String[] list = s.substring(2, s.length()-2).split("\\},\\{");
        
        //몇 개의 숫자로 구성되어 있는지 해당 길이로 오름차순 정렬
        Arrays.sort(list, new Comparator<String>(){
            @Override
            public int compare(String s1, String s2) {
                String[] a1 = s1.split(",");
                String[] a2 = s2.split(",");
                
                return a1.length - a2.length;
            }
        });
       
      	//하나씩 돌려가면서 만약에  answer에 이미 담긴 숫자면 넘어가고 아니면 추가
        for (int i = 0; i < list.length; i++) {
            String[] temp = list[i].split(",");
            
            for (int j = 0; j < temp.length; j++) {
                int num = Integer.parseInt(temp[j]);
                if (answer.indexOf(num) == -1) answer.add(num);
            }
        }
        
        //int[]로 변환 후 리턴
        return answer.stream().mapToInt(Integer::intValue).toArray();
    }
}

 

테스트 1 통과 (3.40ms, 74.5MB)
테스트 2 통과 (8.10ms, 75.2MB)
테스트 3 통과 (3.30ms, 73.6MB)
테스트 4 통과 (3.10ms, 74.5MB)
테스트 5 통과 (11.48ms, 76.3MB)
테스트 6 통과 (12.07ms, 85.7MB)
테스트 7 통과 (41.08ms, 98.7MB)
테스트 8 통과 (151.94ms, 133MB)
테스트 9 통과 (62.32ms, 113MB)
테스트 10 통과 (120.71ms, 147MB)
테스트 11 통과 (150.36ms, 138MB)
테스트 12 통과 (271.85ms, 160MB)
테스트 13 통과 (177.02ms, 149MB)
테스트 14 통과 (239.11ms, 162MB)
테스트 15 통과 (3.18ms, 79.1MB)

 

 

 

 

 

 

728x90

+ Recent posts