JS_daily_algorithm_04

박하영·2022년 4월 21일
0

algorithm

목록 보기
7/9

문제:

내가 쓴 코드:

<html>
  <head>
    <meta charset="UTF-8" />
    <title>출력결과</title>
  </head>
  <body>
    <script>
      function solution(arr) {
        let answer, min;

        answer = arr[0];

        for (i = 0; i < arr.length - 1; i++) {
          if (arr[i] < arr[i + 1]) min = arr[i];
          if (answer > min) answer = min;
        }

        return answer;
      }

      let arr = [5, 7, 7, 8, 20, 9, 11];
      console.log(solution(arr));
    </script>
  </body>
</html>

 

모범 답안:

<html>
    <head>
        <meta charset="UTF-8">
        <title>출력결과</title>
    </head>
    <body>
        <script>
            function solution(arr){         
                let answer, min=Number.MAX_SAFE_INTEGER;
                for(let i=0; i<arr.length; i++){
                    if(arr[i]<min) min=arr[i];
                }
                answer=min;
                return answer;

            }

            let arr=[5, 7, 1, 3, 2, 9, 11];
            console.log(solution(arr));
        </script>
    </body>
</html>

 

Impressive Point & Learning Point

  1. "수를 비교한다"는 전제가 나왔을 때 특히 배열 구조에서 앞 번쨰 수와 뒷 번쨰 수를 비교한다는 편견으로 굳어져 있었던 것 같다. 모범 코드를 보기전에 작성한 코드를 보면 굳이 필요하지 않은 수를 두번씩 비교해가면서 1중으로 체크할 수 있는 것을 2중으로 체크하였다. <- 비효율적인 구조로 코딩한 것을 깨닫고, 1중으로 한번만 비교해도 된다는 것을 알았다.

  2. 처음 변수 선언시에 초기화 시킬때 Number.MAX_SAFE_INTEGER를 사용해서 초기화 시킬 수 있다는 점에 대해 알았고, 이 녀석은 보통 큰 정수형 임의의 수 하나로 초기화 시킬때에 사용한다고 한다. min이 필요할때는 이 랜덤 초기화 숫자가 너무 작으면 답이 바뀔수도 있기 때문에 안전한 큰 임의의 정수로써 초기화 시키는 것 이다. (아마 반대의 큰 수를 구하는 경우에는 MAX가 아닌 작은 MIN 숫자로 초기화 시킬 것 같다)

 

profile
RM_young

0개의 댓글