카카오 신입공채 3차 코딩테스트 문제3 파일명정렬 JAVA
- JAVA/알고리즘과 자료구조
- 2018. 4. 20. 00:05
카카오 신입공채 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 |
'JAVA > 알고리즘과 자료구조' 카테고리의 다른 글
카카오 신입공채 3차 코딩테스트 문제5 자동완성 JAVA Tire구현 (1) | 2018.04.21 |
---|---|
카카오 신입공채 3차 코딩테스트 문제4 방금그곡 JAVA (0) | 2018.04.20 |
카카오 신입공채 3차 코딩테스트 문제2 LWZ압축 JAVA 예제 (0) | 2018.04.19 |
카카오 신입공채 3차 코딩테스트 문제1 N진수 게임 JAVA 예제 (2) | 2018.04.19 |
카카오 신입공채 1차 코딩테스트 문제7 추석트래픽 JAVA 예제 (0) | 2018.04.11 |
이 글을 공유하기