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
오늘은 조금 몸상태가 안좋아서 그런가 진도도 제대로 못빼고 ㅜㅜ
진도가 조금 느린 나에 대해 우울감이 느껴지는 하루였다..😥