072DATA

n번째 글자를 기준으로 오름차순 정렬하기 - JavaScript 본문

Anything/끄적끄적

n번째 글자를 기준으로 오름차순 정렬하기 - JavaScript

0720 2024. 7. 26. 18:40

 

 

문제 설명J하려 합니다. 예를 들어 strings가 ["sun", "bed", "car"]이고 n이 1이면 각 단어의 인덱스 1의 문자 "u", "e", "a"로 strings를 정렬합니다.

 

구현 순서

  1. 문자열 가장 앞 글자를 붙인 배열 만들기
  2. 해당 배열을 사전순으로 정렬하기
  3. 앞 글자 제거한 후 return하기

 

 

문자열 가장 앞 글자를 붙인 배열 만들기

 

for ( var i=0; i<strings.length; i++) {
	strings[i] = strings[i][n] + strings[i]
} // ex) car -> a + car -> acar

 

 

 

반복문을 통해 n번째 문자 + 전체 문자를 합쳐서

 

strings[i] 번쨰에 값을 재할당 해준다

 

왜냐하면 맨 앞 글자에 넣어준 뒤 사전순으로 정렬하기 위함이다

 

해당 배열을 사전 순으로 정렬하기

 

strings.sort(); // a~z 순서

 

 

 

sort 메서드를 사용하여 strings의 배열의 값들을 사전 순으로 정렬해준다.

 

앞 글자를 제거 후 return하기

 

for(var j=0; j<strings.length; j++){
	strings[j] = strings[j].replace(strings[j][0], "");
    answer.push(strings[j]);
}

 

다시 반복문을 통해서 각 배열의 문자열마다

가장 앞 부분에 붙여놨던 글자를 replace 메소드를 사용하여 

제거한 뒤 push 메소드를 사용하여 answer 배열에  붙여준다

 

replace 같은 경우에는 두가지 인자가 들어가는데 

첫 번째는 바꿀 요소를 선택하고, 두 번째는 어떻게 바꿀 것인지 정해야 함

 

 

전체 코드 

 

let strings = ["qwe", "asd", "vas"];
let n = 0;

function sortStrings (strings, n) {
    var answer = [];
    for ( var i=0; i<strings.length; i++) {
        strings[i] = strings[i][n] + strings[i]
    } // ex) car -> a + car -> acar
    strings.sort(); // a~z 순서
    for(var j=0; j<strings.length; j++){
        strings[j] = strings[j].replace(strings[j][0], "");
        answer.push(strings[j]);
    }
    console.log(answer);
    return answer;
}

sortStrings(strings, n);

 

 

아쉬운 점

 

코딩테스트 문제를 오랜만에 푸니까 문자열의 문자를 가져올 때

chatAt 밖에 생각이 나질 않아서 한동안 뇌가 굳은채로 문제를 풀었다

결국 해설 보면서 아.. 이렇게 할 수 있었지 하고 되뇌이는 시간을 가졌다 

'Anything > 끄적끄적' 카테고리의 다른 글

콜백 함수에 대한 정리  (0) 2024.08.09
async와 await 짧은 요약  (0) 2024.08.02
일급 객체로서의 함수  (0) 2024.08.01
자바스크립트에서 this란  (0) 2024.07.31
데이터 타입 및 undefined와 null - JavaScript  (0) 2024.07.29