코딩테스트 문제풀이/inflearn

[인프런] Node.js / 섹션1 - 기본문제 풀이 / 5. 최솟값 구하기 (feat. Math, 전개구문/apply)

sangchu 2022. 7. 24. 17:05

나의 풀이

function solution(arr) {
  let answer = arr[0];
  for (i = 1; i < arr.length; i++) {
    if (answer > arr[i]) {
      answer = arr[i];
    }
  }
  return answer;
}

let arr = [5, 7, 15, 3, 2, 9, 11];
console.log(solution(arr));

첫번째 배열을 최솟값으로 정하고,

for문으로 전체 배열을 돌면서 최솟값보다 작은 배열이 있으면 그것을 최솟값을 정하도록 했다.

 

강사 풀이 1

function solution(arr) {
  let answer,
    min = Number.MAX_SAFE_INTEGER; // 안정적인 가장 큰 값
  for (i = 0; i < arr.length; i++) {
    if (arr[i] < min) {
      min = arr[i];
    }
  }
  return answer;
}

let arr = [5, 7, 15, 3, 2, 9, 11];
console.log(solution(arr));

최솟값을 'Number 내장 객체'를 이용하여 '안정적인 가장 큰 값'으로 저장했다.

여기서 최솟값을 그냥 arr[0]으로 정해도 되지만 위와같이 하는 방법을 선호한다.

 

 

강사 풀이 2

function solution(arr) {
  let answer = Math.min(...arr); // ...는 배열을 인자 각각으로 펼쳐줌, 최댓값은  max
  // 전개연산자 안쓰려면 Math.min.apply(null, arr); 첫번째 인자: 객체(this), 두번째 인자: 배열. 근데 걍 전개연산자 쓰는걸 추천함
  return answer;
}

let arr = [5, 7, 15, 3, 2, 9, 11];
console.log(solution(arr));

Math 내장 함수를 이용하여 최솟값을 구하는 방법이다.

...(전개연산자)를 이용하여 배열을 인자 각각으로 펼쳐준 뒤, 최솟값을 골라낸다.

 

전개연산자 대신에 Math.min.apply(객체, 배열)을 이용할 수도 있다.

하지만 전개연산자 방식을 더 선호한다.

 

 

전개 구문 - JavaScript | MDN

전개 구문을 사용하면 배열이나 문자열과 같이 반복 가능한 문자를 0개 이상의 인수 (함수로 호출할 경우) 또는 요소 (배열 리터럴의 경우)로 확장하여, 0개 이상의 키-값의 쌍으로 객체로 확장시

developer.mozilla.org

 

 

Function.prototype.apply() - JavaScript | MDN

apply() 메서드는 주어진 this 값과 배열 (또는 유사 배열 객체) 로 제공되는 arguments 로 함수를 호출합니다.

developer.mozilla.org