public String[] solution(String[] strings, int n) {
Arrays.sort(strings, new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
/*리턴값이 -1이면 내림차순, 0이면 같음, 1이면 오름차순*/
if(o1.charAt(n) > o2.charAt(n)) {
return 1;
}else if(o1.charAt(n) < o2.charAt(n)) {
return -1;
}if(o1.charAt(n) == o2.charAt(n)){
//compareTo a와 b가 같으면 0 반환
//a가 크면 1 , 작으면 -1
return o1.compareTo(o2);
}return 0;
}
});
return strings;
}
Comparator 인터페이스 사용!!!!!!!!!!!!!
정렬에 기준을 부여한다.
n번째 자리 글자를 서로 비교해서 <리턴값이 1 이면 오름차순, -1이면 내림차순, 0이면 같음> 이라는 점을 유의하여 코드를 짜준다.
n번째 자리 글자가 같을 경우엔 String o1, String o2를 비교하여 (compareTo) o1과 o2가 같으면 0 반환, o1 가 크면 1반환, o2가 크면 -1을 반환 해준다.
<다른사람의 풀이!!!!!>
public String[] solution(String[] strings, int n) {
String[] answer = {};
ArrayList<String> arr = new ArrayList<>();
for (int i = 0; i < strings.length; i++) {
arr.add("" + strings[i].charAt(n) + strings[i]);
}
Collections.sort(arr);
answer = new String[arr.size()];
for (int i = 0; i < arr.size(); i++) {
answer[i] = arr.get(i).substring(1, arr.get(i).length());
}
return answer;
}
: 해당 문자열(ex. bed)앞에 비교해야할 문자를 붙혀 리스트에 저장한다.. ebed(e+bed)
정렬을 한다. (Collections.sort()) 앞에 붙혀둔 문자열을 기준으로 정렬이 된다.
맨앞 기준이 되는 문자를 제외한 나머지 문자만 뽑아 answer에 담아준다. (subString(1,문자열길이) 1번째문자부터 문자열 길이까지. bed)