[프로그래머스] 카카오_파일명 정렬 (자바 풀이)
- 알고리즘 문제 해결(PS)/[프로그래머스]
- 2022. 2. 15.
문제
https://programmers.co.kr/learn/courses/30/lessons/17686?language=java
풀이
이 문제를 자바를 이용해 풀기 위해서는 comparable 인터페이스에 대해 알면 좋다. 나는 File 이라는 class를 만들어 comparable 인터페이스를 implements 하게 하였고, compareTo 함수를 오버라이딩하여 문제에 맞게 정렬할 수 있도록 설정하였다.
자세한 내용은 코드를 참고하면 알 수 있다.
코드
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 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 | import java.util.*; class Solution { public String[] solution(String[] files) { String[] answer; ArrayList<File> list = new ArrayList<>(); for(int i=0; i<files.length; i++){ list.add(new File(files[i])); } answer = new String[list.size()]; Collections.sort(list); // 정렬 for(int i=0; i<list.size(); i++){ answer[i] = list.get(i).head + list.get(i).number + list.get(i).tail; } return answer; } static class File implements Comparable<File>{ int num; // 들어온 순서 String head=""; String number=""; String tail=""; /* 생성자-parsing */ File(String str){ int idx=0; while(true){ // 숫자를 만나면 break if(str.charAt(idx)>='0' && str.charAt(idx) <='9') break; idx++; } this.head = str.substring(0,idx); String tmp = ""; while(true){ tmp += str.charAt(idx); idx++; if(idx >= str.length() || str.charAt(idx) < '0' || str.charAt(idx) >'9') break; } this.number = tmp; if(idx < str.length()){ this.tail = str.substring(idx); } } @Override public int compareTo(File o){ /* head 소문자로 변경 */ String str1 = this.head.toLowerCase(); String str2 = o.head.toLowerCase(); if(str1.equals(str2)) { // head가 같다면 int num1 = Integer.parseInt(this.number); int num2 = Integer.parseInt(o.number); if(num1 == num2){ // number가 같다면 return this.num - o.num; // 들어온 순서대로 } return num1-num2; // number 순서대로 } return str1.compareTo(str2); // head 순서대로 } } } | cs |
결과
반응형
'알고리즘 문제 해결(PS) > [프로그래머스]' 카테고리의 다른 글
[프로그래머스] 카카오_문자열 압축 (자바 풀이) (0) | 2022.03.08 |
---|---|
[프로그래머스] 카카오_길찾기 게임 (자바 풀이) (0) | 2022.02.22 |
[프로그래머스] 카카오_압축 (자바 풀이) (0) | 2022.02.14 |
[프로그래머스] 카카오_방금그곡 (자바 풀이) (0) | 2022.02.14 |
[프로그래머스] 카카오_추석 트래픽 (자바 풀이) (0) | 2022.01.25 |