import java.io.IOException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
class Solution {
static class File implements Comparable<File>{
String head, tail;
String number;
File(String str) {
int num_index=0;
for (int i = 0; i < str.length(); i++) {
if (Character.isDigit(str.charAt(i))) {
this.head = str.substring(0,i);
num_index=i;
break;
}
}
for (int i = num_index; i < str.length(); i++) {
if(i-num_index>=5 || !Character.isDigit(str.charAt(i)))
{
this.number = str.substring(num_index,i) ;
this.tail = str.substring(i, str.length());
break;
}
if(i==str.length()-1)
{
this.number = str.substring(num_index,i+1);
this.tail = "";
}
}
}
@Override
public int compareTo(File f) {
if (this.head.toLowerCase().compareTo(f.head.toLowerCase())<0) {
return -1;
} else if(this.head.toLowerCase().compareTo(f.head.toLowerCase())== 0) {
if(Integer.parseInt(this.number)<Integer.parseInt(f.number))
return -1;
else
return 1;
}
else
return 1;
}
}
public String[] solution(String[] files) {
ArrayList<File> file_list = new ArrayList<File>();
for (String s : files) {
file_list.add(new File(s));
}
Collections.sort(file_list, new Comparator<File>() {
@Override
public int compare(File s1, File s2) {
return s1.compareTo(s2);
}
});
String[] answer = new String[files.length];
for (int i = 0; i < answer.length; i++) {
answer[i] =file_list.get(i).head+file_list.get(i).number+file_list.get(i).tail;
}
return answer;
}
}
대체 왜 반이 틀리는 거냐고고고ㅗㅗㅗ
-->해결했음
stable한 정렬이라고 생각했는데
아니였나봄.
index로 정렬도 해줘야했다