문자열로 구성된 리스트 strings와, 정수 n이 주어졌을 때, 각 문자열의 인덱스 n번째 글자를 기준으로 오름차순 정렬하려 합니다. 예를 들어 strings가 [sun, bed, car]이고 n이 1이면 각 단어의 인덱스 1의 문자 u, e, a로 strings를 정렬합니다.
지금까지 lv1문제중에서 시간을 제일 많이 투자했다..
처음에는 테스트케이스1만 통과 ▶ 테스트 25점 ▶ 테스트 91.7점 ... 하다가
제한조건에 모든 strings의 원소의 길이는 n보다 큽니다.을 못보고 if(strings[j].length() >= n)을 해주는 바람에 테스트1을 통과하지 못하다가 고쳐주고 해결하였다...😭
처음에는 hashMap도 이용해보고, 별 코드 다 짜봤는데 결국 정렬하고 푸는 간단한 문제였다.
계속 코드 작성중에 stringindexoutofboundsexception : String index out of range: 1 ▶ 1글자도 안되는 문자열의 인덱스 1값을 찾으려고 해서 난 에러
에러가 났는데 이유가 내가 strings 배열값을 n보다 작은 값으로 바꿔넣어서 난 에러였다.
import java.util.*;
class Solution {
public String[] solution(String[] strings, int n) {
char[] ch = new char[strings.length];
for(int i=0; i<strings.length; i++){
ch[i] = strings[i].charAt(n);
}
Arrays.sort(ch); // 인덱스 n 정렬
Arrays.sort(strings); // strings값 정렬
String[] answer = new String[strings.length];
for(int i=0; i<strings.length; i++){
for(int j=0; j<strings.length; j++){
if(strings[j].length() > n){
if(ch[i] == strings[j].charAt(n)){
answer[i] = strings[j];
strings[j] = ""; //answer에 담은 값은 치환
break;
}
}
}
}
return answer;
}
}
다른사람의 풀이중에 가장 기발했던 코드 중에
strings[i].charAt(n)과 strings[i]를 더해서 ArrayList에 넣고정렬한 후에 answer에 substring을 이용해서 strings[i]만 저장하는 방법! 너무 기발했다... 이렇게도 풀 수 있구나