문제 조건
// 문자열로 구성된 리스트 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 |