카테고리 없음

본캠프 2주차 (3)

jaeoun0238 2024. 11. 6. 20:53

JavaScript 강의

 

2주차

숙제부분 코딩테스트

1. 문제부터 이해해보자

입출력  n번째 글자를 기준으로 오름차순임으로

처음   ["sun", "bed", "car"]    의 1번째라 하면 index는 0 1 2 순서니까 2번째인 sun의 u bed의 e car의 a

이므로 a e u 순서로 ["car", "bed", "sun"] 가 된다!

두번째인 ["abce", "abcd", "cdx"]  는 3번째인 c c x 가 됨으로 겹치게 되어서 마지막 조건인 사전순이 필요하게 되는데

이때 각 문자열 앞에 n을 불러와서 cabce cabcd xcdx로 정렬하게 된다면 cabcd cabce xcdx 가 되기 때문에 

["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];
        //예를 들어, strings[i]가 "car"이고 n이 1일 경우, "car"[1]는 'a'이다
    	//이 글자를 문자열 앞에 붙이면 "acar"이 됨
        // car -> a + car - acar
    }

    // 2. 해당 배열을 사전순으로 정렬(sort)
    strings.sort();
    
    // 3. 앞글자 제거 후 리턴
    //정렬된 각 문자열에서 앞에 붙인 n번째 글자를 제거
    for(var j=0; j<strings.length; j++) {
        strings[j] = strings[j].replace(strings[j][0], ""); //제거하려고 "" <- 빈값으로
        answer.push(strings[j]);

    }
    
    //console.log("answer",answer);

    return answer;
    //answer 배열에는 원래 형태의 문자열들이 n번째 글자를 기준으로 정렬된 순서로 저장되어 있으며, 이를 반환한다..
}

자세한 설명은 주석

 

<오늘의 요약>

결과적으로 각 문자열의 n번째 글자를 문자열 앞에 붙여 임시로 정렬한 후,

n번째 글자를 제거해 원래 문자열 형태로 반환한다.

결과적으로 n번째 글자를 기준으로 사전순 정렬된 배열을 얻을 수 있다.

 

TMI 

오늘은 조금 몸상태가 안좋아서 그런가 진도도 제대로 못빼고 ㅜㅜ

진도가 조금 느린 나에 대해 우울감이 느껴지는 하루였다..😥