문자열을 요소로 갖는 배열을 입력받아 가장 짧은 문자열과 가장 긴 문자열을 제거한 배열을 리턴해야 합니다.
arr[i].length는 20 이하
가장 짧은 문자열의 길이와 가장 긴 문자열의 길이가 같은 경우는 없습니다.
가장 짧은 문자열 또는 가장 긴 문자열이 다수일 경우, 나중에 위치한 문자열을 제거합니다.
let output = removeExtremes(['a', 'b', 'c', 'def']);
console.log(output); // --> ['a', 'b']
output = removeExtremes(['where', 'is', 'the', 'longest', 'word']);
console.log(output); // --> ['where', 'the', 'word',]
function solution (arr){
let result = [];
longestLen = 0;
longestIdx = 0;
shortestLen = 20; // 문제 주의사항에 적혀있다.
shortestIdx = 0;
// 제일 긴 문자열, 짧은 문자열을 담아줄게 필요하다.
for(let i = 0; i < arr.length; i++){
if(arr[i].length >= longestLen){
longestLen = arr[i].length;
longestIdx = i;
}
if(arr[i].length <= shortestLen){
shortestLen = arr[i].length;
shortestIdx = i;
}
}
for(let j = 0; j < arr.length; j++){
if(j !== longestIdx && j !== shortestIdx){
result.push(arr[j]);
}
}
return result;
}
문제 주의 사항 가장 짧은 문자열을 구할 때 기본값을 0으로 둔다면 에러가 발생할 수 있다. 주의 사항을 잘 읽어보면 arr[i].length 는 20이하라는 값을 가지기 때문에 shortestLen에 20을 넣어준다.
그외 문자열의 길이를 넣어주는 선언을 제외하고 몇번째 문자열에 위치하는지 Idx값을 담아줘야 한다. 이걸 처음에 생각못해서 문제를 풀 때 오래걸렸다.
longestIdx, shortestIdx만 생각할 수 있다면 쉽게 풀 수 있다.
result 배열에 push를 통해 longestIdx, shortestIdx만 제외하고 넣어주면 문제가 요구하는 결과값을 쉽게 찾아낼 수 있다.