문자열로 구성된 리스트 strings와, 정수 n이 주어졌을 때, 각 문자열의 인덱스 n번째 글자를 기준으로 오름차순 정렬하려 합니다. 예를 들어 strings가 ["sun", "bed", "car"]이고 n이 1이면 각 단어의 인덱스 1의 문자 "u", "e", "a"로 strings를 정렬합니다.
처음엔 머리가 멍해졌다 n번째 요소만 뽑아서 정렬하는 것까지는 할 수 있겠는데 strings 배열 자체를 어떻게 바꾸지 하는 생각이었다
일단은 힌트를 봤다
- 기본적으로 사전식 정렬입니다. 문자열 배열같은 경우 sort로 정렬이 가능합니다.
- 그런데 인덱스에 해당하는 문자 순서로 정렬하고, 그 인덱스에 해당하는 문자가 같은 경우 사전식으로 정렬해주는 작업이 필요합니다.
- 물론 성능적인 측면에서 더 좋은 방법이 있지만, 지금은 가장 쉬운 방법을 채택하려고 합니다.
정리하면
- 문자열 앞에 인덱스에 해당하는 문자를 붙인다
["sun", "bed", "car"], 1 이라면 → ["usun", "ebed", "acar"] - 사전순으로 정렬한다 (sort활용)
["acar", "ebed", "usun"] - 정렬된 배열의 가장 앞 글자를 땐다
["car", "bed", "sun"]
이런 말이다
function solution(strings, n) {
let answer = new Array(strings.length);
for(let i = 0; i<strings.length;i++ ){
strings[i] = strings[i][n]+strings[i]
}
strings.sort()
for(let i = 0; i<strings.length;i++){
answer[i]=strings[i].slice(1,strings[i].length)
// strings[j].replace(strings[i][0],"");
}
return answer
}
결국 만들긴 했다. MDN과 공부한 내용 뒤져가면서 찾아보니 만들어지긴 했다.
만들고 나면 별 내용이 없는데 문제는 3번 가장 앞 글자 제거에서 한참을 고민했다 무슨 메소드를 어떻게 사용해야 하는가에 대한 부분이다
나는 slice 메소드를 사용했는데 정답에선 replace 메소드를 사용해서 처리하였다
코딩은 암기가 아니라고 하는데 정확한 명칭이나 사용법까지 달달 외울 순 없어도 어떤 기능을 하는 메소드가 있다는 알아야 검색이라도 할 것 같다
하다못해 MDN이라도 잘 뒤질 줄 알아야지
'오늘 뭐했냐 > 기억하면 좋을 문제들' 카테고리의 다른 글
아이스 아메리카노(구매 가능 수와 잔돈 계산) (0) | 2023.05.26 |
---|---|
사분면 위치 구하기 (구조분해할당) (0) | 2023.05.26 |
짝수의 합 (0) | 2023.05.25 |
각도기 구하기 (0) | 2023.05.25 |
숫자 비교 (0) | 2023.05.25 |