const solution = (...numbers) => {
let theSmallestNumber; //아래 포문이 돌면서 가장 작은 수를 갱신함.
numbers.forEach((number) => {
if (!theSmallestNumber) theSmallestNumber = number;
//theSmallestNumber의 값이 없다면 첫번째 들어오는 숫자 할당.
//할당 이후로는 펄시하지 않으므로 동작하지 않음
if (theSmallestNumber > number) theSmallestNumber = number;
//순회중인 number가 현재 theSmallestNumber에 할당되어있는 값보다 작다면
//순회중인 number로 할당.
});
return theSmallestNumber;
//순회 다 하고 가장 작은값을 구했으니 리턴.
};
const res = solution(6, 5, 11);
console.log(solution);
아이디어 :
function 키워드로 함수를 선언했다면, arguments를 사용했겠지만,
arrowFunction을 사용하였으므로 레스트 파라미터 사용.
그렇다면 이제 함수에 다수의 인자가 들어와도 레스트 파라미터인 numbers로 접근 가능.
결국 인자로 들어온 값들을 모두 순회하며 비교해야하므로 반복문 사용.
지금 순회한 값들 중 가장 작은 값 1개를 구하는 것이 문제이므로
가장 작은 값을 저장할 변수 theSmallestNumber 선언
초기값은 할당하지 않았지만, 이후 반복문 내에서 값이 없을경우 처음에 순회하는 수를 할당하게끔 처리.
반복문 동작하면서 숫자 하나하나가 비교되며, 각각 현재의 theSmallestNumber과 비교
비교하며 작을 경우 해당 숫자를 theSmallestNumber 할당.
반복문 종료후에 가장 작은 값을 얻을 수 있음.
댓글