import java.util.*;
class Solution {
public String[] solution(String[] strings, int n) {
Arrays.sort(strings);
for(int i=0;i<strings.length;i++) {
for(int j=i+1;j<strings.length;j++) {
getAns(strings, i, j, n);
}
}
return strings;
}
public void getAns(String[] strings, int a, int b, int n) {
if(strings[a].charAt(n)>strings[b].charAt(n)) {
String tmp = strings[b];
strings[b] = strings[a];
strings[a] = tmp;
}
}
}
테스트케이스를 만들어서 실행 했을 때는 모두 성공했으나,
제출했을 때는 실패케이스가 있었다.
어디가 잘못 된 것이지 잘 모르겠다... 누군가 정답을 알려주셨으면좋겠다ㅜㅜ
import java.util.*;
class Solution {
public String[] solution(String[] strings, int n) {
String[] answer = new String[strings.length];
for(int i=0;i<strings.length;i++) {
answer[i] = strings[i].charAt(n) + strings[i];
}
Arrays.sort(answer);
for(int i=0;i<answer.length;i++) {
answer[i] = answer[i].substring(1);
}
return answer;
}
}
결국 n번째 글자를 문자열 맨 앞에 추가하고,
Arrays.sort()
를 활용하여 풀어냈다.
코드가 훨씬 간결해졌다.
import java.util.*;
class Solution {
public String[] solution(String[] strings, int n) {
// Comparator를 사용하여 strings 배열을 커스텀 정렬
Arrays.sort(strings, new Comparator<String>() {
@Override
public int compare(String s1, String s2) {
// 먼저 n번째 문자를 비교
if (s1.charAt(n) > s2.charAt(n)) {
return 1;
} else if (s1.charAt(n) < s2.charAt(n)) {
return -1;
} else {
// n번째 문자가 같은 경우, 전체 문자열을 사전순으로 비교
return s1.compareTo(s2);
}
}
});
return strings;
}
}
Comparator
인터페이스를 사용하여 커스텀 정렬 기준을 설정하였다.
먼저 n번째 문자를 기준으로 정렬하고,
n번째 문자가 동일한 경우에만 전체 문자열을 사전순으로 정렬한다.
이전에 Comparator 를 본 적이 있지만 너무나도 생소하다.
이것에 대한 공부의 필요성이 느껴진다.