카카오 신입공채 3차 코딩테스트 문제3 파일명정렬 JAVA


카카오 신입공채 3차 코딩테스트 문제3 파일명정렬 JAVA


문제3번은 파일명 정렬 문제였습니다. JAVA 언어를 기준으로 Array정렬시 Comparator를 구현하는 방법이나 Comperable을 구현한 오브젝트를 구현하는 방법이 있을 것 같습니다. 저는 Comparator를 구현하는 방법이 간단할 것 같아서 Comparator를 구현하여 정렬을 처리 하였습니다.



입력형식과 출력형식 그리고 입출력 테스트케이스는 다음과 같습니다.



전문보기 : http://tech.kakao.com/2017/11/14/kakao-blind-recruitment-round-3/


파일명정렬  JAVA Comparator 구현


Arrays.sort에 input 배열을 넘겨주면서 비교가 수행될 Comparator를 구현하여 간단히 처리하였습니다. 내부에서는 배열의 String을 head구간, number구간으로 분리하는 부분과 실제 비교를 처리하는 부분으로 작성되어 있습니다. 


실제 비교수행 : return head1.equals(head2) ? num1 - num2 : head1.compareTo(head2); 


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
32
33
34
35
36
37
38
39
40
41
public static String[] sort(String[] input) {
    Arrays.sort(input, new Comparator<String>() {
        @Override
        public int compare(String s1, String s2) {
            // 첫번째 오브젝트 head, num 추출
            String head1 = s1.split("[0-9]")[0];
            s1 = s1.replace(head1, "");
            head1 = head1.toUpperCase();
            
            String tempNum = "";
            for(char c : s1.toCharArray()) {
                if(Character.isDigit(c) && tempNum.length() < 5) {
                    tempNum += c;
                } else {
                    break;
                }
            }
            int num1 = Integer.parseInt(tempNum);
            
            // 두번째 오브젝트 head, num 추출
            String head2 = s2.split("[0-9]")[0];
            s2 = s2.replace(head2, "");
            head2 = head2.toUpperCase();
            
            tempNum = "";
            for(char c : s2.toCharArray()) {
                if(Character.isDigit(c) && tempNum.length() < 5) {
                    tempNum += c;
                } else {
                    break;
                }
            }
            int num2 = Integer.parseInt(tempNum);
            
            // 비교 처리
            return head1.equals(head2) ? num1 - num2 : head1.compareTo(head2); 
        }
    });
    
    return input;
}
cs




이 글을 공유하기

댓글

Email by JB FACTORY