문제 조건
// 문자열로 구성된 리스트 strings와, 정수 n이 주어졌을 때,
// 각 문자열의 인덱스 n번째 글자를 기준으로 오름차순 정렬하려 합니다. 
// 예를 들어 strings가 ["sun", "bed", "car"]이고 n이 1이면 각 단어의 인덱스 1의 문자 "u", "e", "a"로 strings를 정렬합니다.
// - strings는 길이 1 이상, 50이하인 배열입니다.
// - strings의 원소는 소문자 알파벳으로 이루어져 있습니다.
// - strings의 원소는 길이 1 이상, 100이하인 문자열입니다.
// - 모든 strings의 원소의 길이는 n보다 큽니다.
// - 인덱스 1의 문자가 같은 문자열이 여럿 일 경우, 사전순으로 앞선 문자열이 앞쪽에 위치합니다.
조건 예시

strings = ["szn", "bfd", "car"]
n = 1

 

답안 코드

function solution(strings, n) {
    let result = [];

		// 문자열 가장앞 글자 붙인 문자 배열 만들기
    for (let i = 0; i < strings.length; i++) {
      strings[i] = strings[i][n] + strings[i];
    }

		// 문자열 사전순 정렬
    strings.sort();

		// 앞글자 제거 후 리턴
    for(let j = 0; j < strings.length; j ++) {
      strings[j] = strings[j].replace(strings[j][0],"");
      result.push(strings[j]);
    }

    return result;
}

각 코드들의 설명은 주석으로 처리 되어있다.

 

영상을 보면서 코드를 따라 쳐봤고 당연히 잘 작동되었다.

 

그런데 궁금한게 생겼는데 let result로 배열을 받아오는 것, push(strings[j])를 통해 result에 값을 보내주는 것,

retrun을 통해 배열로 result 값을 보내주는것? 이 부분이 꼭 필요한가 싶어서 약간의 수정을 해보았다.

 

function solution (strings, n) {
    for (var i = 0; i < strings.length; i++) {
        strings[i] = strings[i][n] + strings[i]
    }

    strings.sort()

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

    console.log(strings)
}

위에 말한 것들을 전부 삭제시키고 단순히 console.log를 통해 위에 코드들이 실행 된 후의 strings 값을 나타내주면 되지않을까 싶어서 만들어보았다.

 

아무문제 없이 작동되었고, 내가 생각한 방법과 어떤 차이가 있는지 이렇게 했을때 어떤 문제점이 있는지 검토가 필요할 거 같다.

'Algorithm' 카테고리의 다른 글

나이 비교  (0) 2023.05.31
간단한 문제 풀어보기 ( 더 간단하게.. )  (0) 2023.05.30
문자열에 특정 문자 개수 비교  (0) 2023.05.30