문자열로 구성된 리스트 strings와, 정수 n이 주어졌을 때, 각 문자열의 인덱스 n번째 글자를 기준으로 오름차순 정렬하려 합니다. 예를 들어 strings가 ["sun", "bed", "car"]이고 n이 1이면 각 단어의 인덱스 1의 문자 "u", "e", "a"로 strings를 정렬합니다.
import java.util.*;
class Solution {
public String[] solution(String[] strings, int n) {
String[] answer = {};
ArrayList<String> list = new ArrayList<>();
for(int i=0; i<strings.length; i++){
list.add(strings[i].charAt(n)+strings[i]);
}
answer = new String[list.size()];
Collections.sort(list);
for(int i=0; i<strings.length; i++){
answer[i] = list.get(i).substring(1, list.get(i).length());
}
return answer;
}
}
우선 ArrayList와 Collections를 사용할 수 있도록 import하였다.
이 풀이를 한 번에 설명하자면 stinsgs[i]의 n번째 + strings[i]를 list에 한 번에 넣어 정렬한 후 substring()으로 n번째를 제외한 strings[i]를 출력한 것이다.
예를 들어 strings[i]가car
이고 n이1
이라면 "car"의 인덱스 1번째인a
와car
를 더하여acar
를 만든 뒤 list에 add(추가)한다. 그 후 Collections.sort()로 정렬하게 되면n번째 글자를 기준으로 오름차순 정렬
이라는 조건을 만족하게 된다. 하지만 앞의 n번째 글자는 나오면 안되므로 substring()을 사용해 n번째 글자를 제외한 문자열을 answer[i]에 넣는다.