findSmallestElement
의 arr
인자는 숫자 값으로만 이루어진 배열입니다.arr
의 값들 중 가장 작은 값을 리턴 해주세요.arr
가 비어있으면 0을 리턴 해주세요.[20, 200, 23, 1, 3, 9]
function findSmallestElement(arr) {
if(arr.length===0){
return 0;
} else {
for(let i = 0; i < arr.length; i++){
}
}
}
console.log(findSmallestElement([20, 200, 23, 1, 3, 9]));
여기서 멈췄다...
arr이 비어있으면 0을 리턴해라는 간단하게 구현 가능했는데 문제는 for문을 사용해서 배열을 최소값을 구하는 것이었다😅 바로 떠오르지 않아서 고민하다가 다시 구글링을 시작했다.
배열의 최소값
을 검색해보니 두가지 방법이 나왔다.
첫번째 :
Math.min()
을 이용하는 방법
두번째 : for문을 이용해서 배열을 재 할당하는 방법
간단하게 구현가능한 것을 Math.min()
이었지만 과제는 반복문 파트에서 나온 것이라 반복문으로 구현하고, 이후에 Math.min()
으로도 구현해보았다.
function findSmallestElement(arr) {
let min = arr[0];
if(arr.length===0){
return 0;
}
for(let i = 0; i < arr.length; i++){
if(min > arr[i]){
min = arr[i];
}
}
return min;
}
console.log(findSmallestElement([20, 200, 23, 1, 3, 9])); // 1
처음에 이해가 힘들어서 한 줄 씩 뜯어보았다.
let min = arr[0];
인자로 받은 [20, 200, 23, 1, 3, 9]
배열 값들의 0번째 인덱스를 min이라는 변수에 담는다 → min과 arr 인자의 배열값들을 비교하기 위함이다.
for(let i = 0; i < arr.length; i++){
if(min > arr[i]){
min = arr[i]; 🌟min보다 작으면 현재 index값을 할당
}
}
return min;
만약 min의 값이 arr[i]보다 크다면 min에 현재 index의 배열값이 들어간다.
진행 순서를 풀어써보면 아래와 같다.
min(20) > arr1 ⇒ false → return min; 📢 return 20
min(20) > arr2 ⇒ false → return min; 📢 return 20
min(20) > arr3 ⇒ true → min = arr3 📢 return 1
min(1) > arr4 ⇒ false → return min; 📢 return 1
📌 min(1) > arr5 ⇒ false → return min; 📢 return 1
따라서 최종으로 1 이 출력된다.
이해하고나니 이렇게 쉬운걸.. 스스로 생각해낼 수 있을까싶긴하다(아찔)
Math.min()
을 이용하는 방법let arr = [20, 200, 23, 1, 3, 9]
const minValue = Math.min(...arr)
console.log(minValue); // 1
Math.min()
함수는 파라미터로 입력받은 숫자들 중 최소값을 구해서 리턴하는 함수이다.
ES6 문법인 전개연산자 (...)을 사용해서 배열을 하나씩 꺼낸다.
위의 코드에서 Math.max(...arr)
와 Math.max(1, 2, 3, 4, 5)
는 동일한 코드이다.
코드 한줄 한줄 꼼꼼하게 생각하고 확인하자 실수를 줄이자!
참고🙏🏻
https://velog.io/@youngloper77/반복문으로-최소값-구하기
https://hianna.tistory.com/487