[프로그래머스-자바스크립트] 문자열 내 마음대로 정렬하기

차슈·2024년 4월 22일
1

프로그래머스

목록 보기
21/64
post-thumbnail
post-custom-banner

문제 설명

문자열로 구성된 리스트 strings와, 정수 n이 주어졌을 때, 각 문자열의 인덱스 n번째 글자를 기준으로 오름차순 정렬하려 합니다. 예를 들어 strings가 ["sun", "bed", "car"]이고 n이 1이면 각 단어의 인덱스 1의 문자 "u", "e", "a"로 strings를 정렬합니다.


입출력 예시

stringsnreturn
["sun", "bed", "car"]1["car", "bed", "sun"]
["abce", "abcd", "cdx"]2["abcd", "abce", "cdx"]

풀이

function solution(strings, n) {
    var answer = [];

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

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

1️⃣. 문자열의 가장 앞글자를 붙인 배열을 만든다

strings.length를 사용해서 문자열 길이만큼 돌린다.
strings[i] 는 문자열을 나타냄.
strings[i][n] 은 문자열의 0번째, 1번째, 2번째 로 분리해야한다
그러니까 strings[i]가 car 라고 한다면

 strings[i][0] = c
 strings[i][1] = a
 strings[i][2] = r

이렇게 된다. 그리고 나서 +strings[i]를 다시 붙여줘야 정렬가능


2️⃣. 해당 배열을 사전순으로 정렬 (sort)

sort()는 알아서 오름차순으로 정렬해준다

strings.sort(); 

3️⃣. 앞글자 제거 후 리턴

1️⃣번에서 이미 strings[i][n] 했던 것을 지워줘야 하므로

replace(바꿀요소, 어떻게 바꿀것인가)

strings.replace(strings[j][0],"");

맨 앞에 붙인것을 바꾼다 = ""를 사용해서 빈값으로 바꾼다 = 제거

그리고 push를 사용해서 제거된 strings[j]를 넣어서 출력

post-custom-banner

0개의 댓글