[자바스크립트] for문을 이용하여 배열의 최솟값 구하기

rimu·2020년 4월 22일
3

Q. findSmallestElement 함수를 구현해 주세요.
findSmallestElement 의 arr 인자는 숫자 값으로만 이루어진 array 입니다.
array 의 값들 중 가장 작은 값을 리턴해주세요. 만일 array가 비어있으면 0을 리턴해주세요.


예를 들어, 다음과 같은 array이 인자(input)으로 들어왔다면:
[20, 200, 23, 1, 3, 9]
1이 리턴되어야 합니다.

처음에 배열의 값들 각각 앞 뒤의 애들끼리 비교해서 더 큰 애를 삭제하는 식으로 시도해보고 있었는데 시간만 잔뜩 쓰고 해결을 못했다. 그러다 전혀 생각해보지 못한 방식으로 해결이 되어서... 박제한다. 왠지 활용을 많이 할 코드인 것 같음!

function findSmallestElement(arr){

  if(arr.length === 0) {
    return 0; //빈 배열이면 0을 리턴
  } else { 
    let min = arr[0];
    // 변수 min에 배열의 아무 값을 임의로 설정. (가상의 최솟값)
    for (i = 0 ; i < arr.length; i++) {
      if (arr[i] < min ) {
        min = arr[i];
      } 
    } return min;  
  }
  
}

findSmallestElement([2000000, 30, 5, 7, 200, 1, 0, 9])
//0 리턴 ;

이 예제의 핵심은 먼저 최솟값을 변수로 설정하고 배열의 임의의 값을 할당하는 것이다. 그래서 배열의 길이만큼 반복문을 실행하면서 그 가상의 최솟값과 각 배열의 원소를 비교해본다. 만약 변수 min의 값이 더 크면 값을 새로 재할당을 해준다. (최솟값 갱신) 그게 아니라 변수 min의 값이 여전히 더 작을때는 그대로 값을 유지하면서 리턴해준다.

약간 아이돌월드컵의 코딩 버전인거같다고 생각하면 쉬운 거 같다. 최솟값 월드컵?ㅎㅎ

profile
Perfectly imperfect ✨

0개의 댓글