728x90
반응형
📜 문제 내용
🤔 과정
- 문자열의 n 번째 인덱스에 대한 정렬이므로 charAt(n)을 사용해야겠다고 판단.
- 어차피 모든 문자열은 소문자이므로 - 'a' 를 통해 0 부터의 인덱스 접근이 가능할 것이라고 판단했다.
- 접근한 인덱스를 통해서 조건에 맞게 삽입하고 나중에 answer 배열에 순서대로 넣으려면, arraylist가 자유로울 것이라고 생각했다.
- 마지막 제한 조건의 "해당 인덱스 문자가 같은 문자열이 여럿 일 경우, 사전순으로 앞선 문자열이 앞쪽에 위치합니다."를 통해 미리 사전순으로 정렬시켜 놓으면 편할 것이라고 생각했다.
< 총 과정 >
미리 사전순으로 정렬 -> ArrayList 생성 -> charAt(n) - 'a' 로 인덱스 접근 -> 문자열을 ArrayList에 삽입 -> answer 배열에 순서대로 삽입
✨ 최종 제출 답안
import java.util.*;
class Solution {
public String[] solution(String[] strings, int n) {
int stringsArrLen = strings.length;
/*
마지막에 인덱스 n의 문자가 같은 문자열이 여럿 일 경우
문자열이 사전순으로 정렬되어야 하므로
미리 전체를 사전순으로 정렬
*/
Arrays.sort(strings);
// 알파벳 갯수는 26개 , ArrayList 생성 및 초기화
ArrayList<String>[] arr = new ArrayList[26];
for(int i = 0; i < 26; i++){
arr[i] = new ArrayList<String>();
}
// 기준이 되는 인덱스 n의 문자를 삽입
for(int i = 0; i < stringsArrLen; i++){
int stdNum = strings[i].charAt(n) - 'a';
arr[stdNum].add(strings[i]);
}
String[] answer = new String[stringsArrLen];
int idx = 0;
for(int i = 0; i < 26; i++){
for(int j = 0; j < arr[i].size(); j++){
answer[idx++] = arr[i].get(j);
}
}
return answer;
}
}
🔗 문제 링크
728x90
반응형