[알고리즘] 기초 문제 풀이 - 최솟값 구하기
최솟값 구하기
7개의 수가 주어지면 그 숫자 중 가장 작은 수를 출력하는 프로그램을 작성하세요.
▣ 입력설명
첫 번째 줄에 7개의 수가 주어진다.
▣ 출력설명
첫 번째 줄에 가장 작은 값을 출력한다.
▣ 입력예제 1
5 3 7 11 2 15 17
▣ 출력예제 1
2
7개의 숫자 중 최솟값을 구하는 문제이다. 일단 숫자가 7개나 되니까 효율적인 방법이 무엇일까라는 생각이 먼저 떠오른다. for문
으로 쭉 돌려가면서 최솟값을 찾는게 가장 먼저 생각나지만 효율적으로 보이진 않는다. 주어진 배열을 오름차순으로 정렬하면 편하지 않을까라는 생각이 들었고, 배열 고차 함수중 sort
메서드를 사용해야겠다는 생각이 들었다.
하지만 단순히 sort
메서드를 사용하면 정렬이 생각하는대로 잘되지 않는다. 그 이유는 sort
메서드의 기본정렬 순서는 유니코드 코드 포인트의 순서를 따르기 때문이다. 배열의 요소가 숫자 타입이라 할지라도 배열의 요소를 일시적으로 문자열로 변환한 후 유니코드 코드 포인트의 순서를 기준으로 정렬한다.
예를 들어 let arr = [5, 7, 1, 3, 2, 9, 11]
을 sort
메서드를 통해 정렬하여도 그에 대한 정렬값으로 [1, 11, 2, 3, 5, 7, 9]
이 나온다.
이를 해결하기 위한 방법으로 sort
메서드에 정렬 순서를 정의하는 비교 함수를 인수로 전달해주면 된다.
내 풀이
function solution(arr){
let min = 0;
arr.sort((a,b) => a - b);
min = arr[0]
return min;
}
강사님 풀이
function solution(arr){
let answer, min=Number.MAX_SAFE_INTEGER;
for(let i=1; i<arr.length; i++){
if(arr[i]<min) min=arr[i];
}
answer=min;
return answer;
}
위는 for문
을 도는 기초적인 풀이법.
function solution(arr) {
let answer = Math.min(...arr);
return answer;
}
이건 Math
내장 함수를 이용한 풀이법
Author And Source
이 문제에 관하여([알고리즘] 기초 문제 풀이 - 최솟값 구하기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@shinwonse/알고리즘-기초-문제-풀이-최솟값-구하기저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)