🖇️ 문제 링크
📝 문제 분석
파일명을 정규식 매칭을 통해 3그룹으로 나눕니다.
HEAD, NUMBER, TAIL 부분으로 분리하고 File 클래스를 만들어 정렬에 필요한 요소들을 저장합니다.
문제의 정렬 기준에 맞게 정렬 후 순서대로 배열에 넣습니다.
⌨️ 코드
import java.util.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
class Solution {
public String[] solution(String[] files) {
int n = files.length;
File[] arr = new File[n];
int idx = 0;
for(String file : files) {
Pattern pattern = Pattern.compile("(\\D+)([0-9]+)(.*)");
Matcher matcher = pattern.matcher(file);
if(matcher.find())
arr[idx] = new File(idx++, matcher.group(0), matcher.group(1).toUpperCase(), Integer.parseInt(matcher.group(2)));
}
Arrays.sort(arr, (f1, f2) -> {
if(f1.head.compareTo(f2.head) != 0)
return f1.head.compareTo(f2.head);
if(f1.num != f2.num)
return f1.num - f2.num;
return f1.idx - f2.idx;
});
String[] ans = new String[n];
for(int i = 0; i < n; i++)
ans[i] = arr[i].name;
return ans;
}
class File {
String name, head;
int num, idx;
File(int idx, String name, String head, int num) {
this.idx = idx;
this.name = name;
this.head = head;
this.num = num;
}
}
}
Uploaded by Notion2Tistory v1.1.0