상세 컨텐츠

본문 제목

알고리즘 문제풀이 - removeExtremes

Programming Language/JavaScript

by Yongari 2022. 12. 23. 19:01

본문

문제 설명 : 문자열을 요소로 갖고있는 배열을 입력받고 문자열의 길이가 가장 긴 문자열과 가장 짧은 문자열을 제거한 배열을 리턴해야합니다. 이 때 배열의 최대길이는 약 20으로 조건이 있습니다. 상세조건은 다음과 같습니다.

 

입력

인자 1 : arr

  • string 타입을 요소로 갖는 배열
  • 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 removeExtremes(arr) {
    //결과값으로 쓸 배열 설정
  	let result = [];
    
    //가장 긴 문자열의 길이
    longLen = 0;
    //가장 긴 문자열의 인덱스
    longIdx = 0;
    //가장 짧은 문자열의 길이
    shortLen = 20; 
    //가장 짧은 문자열의 인덱스
    shortIdx = 0;
   
    for(let i = 0; i < arr.length; i++){
        //가장 길이가 긴 문자열의 인덱스 찾기
    	if(arr[i].length >= longLen){
        	longLen = arr[i].length;
            longIdx = i;
        }
        //가장 길이가 짧은 문자열의 인덱스 찾기
        if(arr[i].length <= shortLen){
        	shortLen = arr[i].length;
            shortIdx = i;
        }
    }
    //가장 긴 문자열과 짧은 문자열을 제외한 요소를 결과 배열에 삽입
    for(let j = 0; j < arr.length; j++){
    	if(j !== longIdx && j !== shortIdx){
        	result.push(arr[j]);
        }
    }
    //결과값 리턴
    return result;
}

 

 

 

출처 : 코드스테이츠

관련글 더보기