ALGORITHM/PROGRAMMERS
[프로그래머스] 파일명 정렬 (2018 KAKAO BLIND RECRUITMENT)
0298
2021. 2. 9. 22:51
programmers.co.kr/learn/courses/30/lessons/17686
코딩테스트 연습 - [3차] 파일명 정렬
파일명 정렬 세 차례의 코딩 테스트와 두 차례의 면접이라는 기나긴 블라인드 공채를 무사히 통과해 카카오에 입사한 무지는 파일 저장소 서버 관리를 맡게 되었다. 저장소 서버에는 프로그램
programmers.co.kr
2021-02-09
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
|
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
public class Solution17686 {
public static ArrayList<File> list;
static class File implements Comparable<File>{
int idx;
String head;
int number;
public File(int idx, String head, int number) {
this.idx = idx;
this.head = head;
this.number = number;
}
@Override
public int compareTo(File file) {
if(this.head.equals(file.head)) {
if(this.number == file.number) return this.idx - file.idx;
return this.number - file.number;
}
return this.head.compareTo(file.head);
}
}
public static String[] solution(String[] files) {
String[] answer = new String[files.length];
list = new ArrayList<>();
for(int i = 0; i < files.length; i++) {
boolean flag = false;
boolean numFlag = false;
String head = "";
String num = "";
for(int j = 0; j < files[i].length(); j++) {
if(flag && !(0 <= Character.getNumericValue(files[i].charAt(j)) && Character.getNumericValue(files[i].charAt(j)) <= 9)) {
numFlag = true;
} else if(!numFlag && (0 <= Character.getNumericValue(files[i].charAt(j)) && Character.getNumericValue(files[i].charAt(j)) <= 9)) {
num += files[i].charAt(j);
flag = true;
} else if(!flag){
head += files[i].charAt(j);
}
}
list.add(new File(i, head.toLowerCase(), Integer.parseInt(num)));
}
Collections.sort(list);
for(int i = 0; i < list.size(); i++) {
answer[i] = files[list.get(i).idx];
}
return answer;
}
public static void main(String[] args) {
String s[] = {"img12.png", "img10.png", "img02.png", "img1.png", "IMG01.GIF", "img2.JPG"};
System.out.println(Arrays.toString(solution(s)));
}
}
|
cs |
#문제풀이
파일명을 head와 number로 분리시킨 후, 정렬을 해주는 문제이다.