반복문을 통해 배열 내 가장 짧은 문자열과 가장 긴 문자열 찾기 Javascript

cptkuk91·2022년 8월 14일
1

Algorithm

목록 보기
60/161
post-custom-banner

문제

문자열을 요소로 갖는 배열을 입력받아 가장 짧은 문자열과 가장 긴 문자열을 제거한 배열을 리턴해야 합니다.

주의 사항

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만 제외하고 넣어주면 문제가 요구하는 결과값을 쉽게 찾아낼 수 있다.

profile
메일은 매일 확인하고 있습니다. 궁금하신 부분이나 틀린 부분에 대한 지적사항이 있으시다면 언제든 편하게 연락 부탁드려요 :)
post-custom-banner

0개의 댓글