• 주어진 숫자들 중 가장 작은 수를 출력하라

작성 코드 1

  • 생각나는대로 작성한 코드 (마음에 안듦!)

    const solution = (arr) => {
      let answer = undefined;
    
      for (let i = 0; i < arr.length; i++) {
        if (arr[i] < arr[i + 1]) {
          if (answer == undefined || arr[i] < answer) {
            answer = arr[i];
          }
        }
      }
      return answer == undefined ? -1 : answer;
    };
    

작성 코드 2

  • 처음부터 Min을 배열의 첫번째 수로 지정하고 비교하면서 최소값을 구하니 가독성이 좋아짐

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

작성 코드 3

  • map() 메소드를 사용해서 배열을 순회하면서 찾은 값의 가장 작은 값을 반환

    const solution = (arr) => {
      return Math.min(...arr.map((num) => num));
    };
    
  • map()은 리턴값을 사용해 새로운 배열을 만들때 쓰는 함수이고, 현재 원본 배열을 복사해서 쓴것이라 비효율적

    더 간단하게 줄인다면 어떻게 해야할까..

    const solution = (arr) => {
      Math.min(...arr);
    };
    

더 간단하게 줄이려고 고민할 수록 짧아지는데, 언제쯤 나도 한번에 깔끔하게 작성 할 수 있을까


Number.MAX_SAFE_INTEGER 사용

MDN 설명

const solution = (arr) => {
  let answer,
    min = Number.MAX_SAFE_INTEGER;

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

댓글남기기