https://school.programmers.co.kr/learn/courses/30/lessons/12915
- 단어와 index 값의 문자를 Map으로 저장한다.
- key 정렬을 한 후 value 정렬을 하여 구한다.
class Zoo {
public String[] solution(String[] strings, int n) {
String[] answer = new String[strings.length];
Map<String, String> map = new HashMap<>();
for (int i=0; i < strings.length; i++) {
map.put(strings[i], String.valueOf(strings[i].charAt(n)));
}
List<Map.Entry<String, String>> entryList = new LinkedList<>(map.entrySet());
entryList.sort(Map.Entry.comparingByKey());
entryList.sort(Map.Entry.comparingByValue());
for (int i=0; i<entryList.size(); i++) {
answer[i] = entryList.get(i).getKey();
}
return answer;
}
}
비슷하지만 간결한 풀이
class Solution {
public String[] solution(String[] strings, int n) {
Arrays.sort(strings);
Arrays.sort(strings, Comparator.comparing((s) -> s.substring(n, n + 1)));
return strings;
}
}
다른 발상을 가진 풀이
class Solution {
public String[] solution(String[] strings, int n) {
String[] answer = {};
ArrayList<String> arr = new ArrayList<>();
for (int i = 0; i < strings.length; i++) {
arr.add("" + strings[i].charAt(n) + strings[i]);
}
Collections.sort(arr);
answer = new String[arr.size()];
for (int i = 0; i < arr.size(); i++) {
answer[i] = arr.get(i).substring(1, arr.get(i).length());
}
return answer;
}
}
java가 복잡해 보여도 확실히 타입들을 지정해 줘서 오류 날 일이 덜하겠네여