문자열로 구성된 리스트 strings와, 정수 n이 주어졌을 때, 각 문자열의 인덱스 n번째 글자를 기준으로 오름차순 정렬하려 합니다. 예를 들어 strings가 ["sun", "bed", "car"]이고 n이 1이면 각 단어의 인덱스 1의 문자 "u", "e", "a"로 strings를 정렬합니다.
public class StringSort {
public static void main(String[] args) {
StringSort ss = new StringSort();
String[] strings = {"sun", "bed", "car"};
int n = 1;
String[] solution = ss.solution(strings, n);
for (String s : solution) {
System.out.println("s = " + s);
}
}
public String[] solution(String[] strings, int n) {
Arrays.sort(strings, ((o1, o2) -> {
String a = String.valueOf(o1);
String b = String.valueOf(o2);
char c1 = a.charAt(n);
char c2 = b.charAt(n);
if(c1==c2) return a.compareTo(b);
return c1-c2;
}));
return strings;
}
}
조금 복잡한? 지금까지 풀었던 문제와는 조금 다른 정렬 문제였다. 처음에는 sort를 사용하여 재귀로 풀 생각을 했는데. 그럼 또 sort를 어떤 정렬 알고리즘으로 풀어야할지 고민이 되었다. 그래서 못 풀고 있었고 결국 검색하여 찾아보니 compareTo()를 통해서 해결 했더라...ㅜㅜ 내가 원하는 방식은 아니였지만 요즘 코테에서 자체 제공하는 idea와 검색 또한 제한한다면 다음과 같은 방식 풀이가 도움이 될것이다. 코테에서 내가 정렬 알고리즘까지 구현한다면... 하는 분들도 분명 계시겠지만 ㅎㅎ...(내 친구) 나는 못할거 같다 아직은!
정렬은 sort로 풀어 내고 String끼리 비교는 compareTo()가 있다