본문 바로가기

알고리즘

JS | 최솟값 구하기

❓7개의 수가 주어지면 그 숫자 중에 가장 작은 수를 출력하시오.

 

        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=[6, 8, 2, 4, 11, 65, 1];
        console.log(solution(arr));

let answer, min=Number.MAX_SAFE_INTEGER;

먼저 이렇게 answer변수를 만들어주고,

최솟값이니까 min 변수도 만들어주는데

이때, 안전하게 가장 큰 수를 할당해 놓는다.

(그 이유는 아래에 나옴)

 

그리고 for문을 사용하여

i를 0으로 시작하고 7개의 숫자가 있는 arr의 수만큼 증가시킨다.

여기서 if를 사용하여 arr 배열에 있는 수가 min보다 작으면 min이 배열 안에 있는 수가

되도록 설정해 놓는다.

(이때 처음에 min에 가장 큰 수를 적용해 놓아서 어떤 수가 들어가던

안전하게 첫번째 배열 값이 min이 된다.)

 

그리고 min을 answer로 출력하면

배열 안에 가장 작은 수가 출력이 된다.

 

 

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

        let arr=[6, 8, 2, 4, 11, 65, 1];
        console.log(solution(arr));

 

아니면 처음부터 min에 arr배열의 첫 번째 값으로 설정해주고

i를 1로 설정하여 돌려도 같은 결과가 나온다.

 

 

***내장 함수로 최솟값을 구할 수 있다.

        function solution(arr) {
            let answer=Math.min(3,2,11,7,1);
            return answer;
        }

이런식으로 Math 함수에 min을 사용하면

인자에 있는 수중에 최솟값을 출력해준다.

 

그런데 우리는 arr에 배열로 작성을 했다.

그냥 인자에 arr를 넣으면 숫자가 아니라고 출력되지 않는다.

        function solution(arr) {
            let answer=Math.min(...arr);
            return answer;
        }

        let arr = [6, 8, 2, 4, 11, 65, 1];
        console.log(solution(arr));

이럴때는

 ... 을 사용해서 전개 연산자를 이용해야한다.

배열을 펼쳐서 넣어준다고 생각하면 된다.

 

arr[0], arr[1].... 이런식으로 펼쳐준다.

 

최댓값은 max로 구해주면 된다.