class Solution {
public String[] solution(String[] strings, int n) {
String[] answer = new String[strings.length];
Arrays.sort(strings);
for (int i = 0; i < strings.length; i++){
String temp = "";
for (int j = 0; j < strings.length; j++){
if (strings[i].charAt(n) < strings[j].charAt(n)){
temp = strings[i];
strings[i] = strings[j];
strings[j] = temp;
}
if (strings[i].charAt(n) == strings[j].charAt(n)){
if (strings[i].compareTo(strings[j]) < 0) {
temp = strings[i];
strings[i] = strings[j];
strings[j] = temp;
}
}
}
}
for (int i = 0; i < strings.length; i++){
answer[i] = strings[i];
}
return answer;
}
}
- chatAt()
String으로 저장된 문자열 중에서 한 글자만 선택해 char타입으로 변환해주는 메서드
만약에 n의 인덱스의 위치의 숫자가 같다면 compareTo를 통하여 strings[i]와 strings[j]의 첫번째 인덱스부터 비교합니다. 만약에 strings[i]가 strings[j]보다 사전순으로 정렬합니다. 즉 0보다 작은 마이너스의 숫자라면 둘의 위치를 바까줍니다.
abce 와 abcd는 n번째가 2라고 한다면 동일한 b로 값이 같아집니다. 첫번째 인덱스부터 "a,b,c"로 똑같아 마지막 인덱스인 d와 e를 비교합니다. 'd'는 아스키 코드로 100, 'e'는 101 입니다. 그러므로 -1의 값이 나옵니다.
- compareTo()
String str = "abce";
System.out.println(str.compareTo("abcd));
e = 101, d = 100 이므로 1을 리턴
개발자로서 배울 점이 많은 글이었습니다. 감사합니다.