


나의 풀이
import java.util.*;
class Solution {
public String[] solution(String[] strings, int n) {
String[] answer = new String[strings.length];
List<String> list = new ArrayList<>(); // 1
for(int i = 0; i < strings.length; i++) { // 2
list.add(strings[i].charAt(n) + strings[i]);
}
Collections.sort(list); // 3
for(int i = 0; i < list.size(); i++) { // 4
answer[i] = list.get(i).substring(1);
}
return answer;
}
}
과정
- 문자열을 담을 list를 지정해준다
- list에 strings[i]에 n번 째 문자를 앞에 추가해서 list에 넣는다
- Collections.sort(arraylist) : ArrayList 오름차순 정렬
- answer에 2번 과정에서 해줬던 문자를 뺀 원래 문자열을 넣는다
다른 사람 풀이
import java.util.*;
class Solution {
public String[] solution(String[] strings, int n) {
Arrays.sort(strings);
Arrays.sort(strings, new Comparator<String>(){
@Override
public int compare(String s1, String s2){
if(s1.charAt(n) > s2.charAt(n)) return 1; //
else if(s1.charAt(n) < s2.charAt(n)) return -1;
else return 0;
}
});
return strings;
}
}
- Comparable과 Comparator는 모두 인터페이스(interface)
- Comparable 인터페이스를 쓰려면 compareTo 메소드를 구현해야하고, Comparator 인터페이스를 쓰려면 comapre 메소드를 구현해야 한다
- Comparable은 "자기 자신과 매개변수 객체를 비교"하는 것이고, Comparator는 "두 매개변수 객체를 비교"(본질적으로 비교한다는 것 자체는 같지만, 비교 대상이 다르다는 것)