for 문은 조건식이 거짓으로 판별될 때까지 코드 블록을 반복 실행한다. 가장 일반적으로 사용되는 반복문이다.
for (초기화식; 조건식; 증감식) {
조건식이 참인 경우 반복 실행될 문;
}
findSmallestElement 함수를 구현해 주세요.
findSmallestElement
의arr
인자는 숫자 값으로만 이루어진 배열입니다.arr
의 값들 중 가장 작은 값을 리턴 해주세요.- 만일
arr
가 비어있으면 0을 리턴 해주세요.- 예를 들어, 다음과 같은 배열이 인자(input)으로 들어왔다면 1이 리턴 되어야 합니다. [20, 200, 23, 1, 3, 9]
function findSmallestElement(arr) { if(arr.length === 0){ return 0; } let smallestNumber = arr[0]; for(let i = 0; i < arr.length; i++){ if(smallNumber > arr[i]){ smallestNumber = arr[i] } } return smallestNumber } findSmallestElement([20, 200, 23, 1, 3, 9]);
for문에 index 0인 20을 넣어보자 if 만약에 (20 > 20)이 true라면 smallestNumber = arr[i]가 된다. 하지만 false가 되어서 다음으로 넘어가게 되고 이러한 성질을 반복하면 (20>1)이 true라면 smallestNumber = arr[3]이 된다. 즉 1이 된다. 1이 된 smallestNumber로 반복해보면 결국 답은 1이라는게 나온다.
divideArrayInHalf 함수를 다음과 같이 구현해주세요.
divideArrayInHalf
함수는 array를 인자로 받습니다. 이 array는 숫자 값으로 만 구성되어 있으며 총 5개의 요소(element)들로 구성되어 있습니다.divideArrayInHalf
함수는 인자로 들어온 array 로 부터 새롭게 구성된 배열 result 을 리턴합니다.- array 요소들 중 10과 같거나 작은 값의 요소들은 result의 맨 앞으로, 10보다 큰 값의 요소들은 result의 맨 뒤로 재구성된 배열을 리턴 해주세요.
- 재구성이 되는 순서는 array의 맨 뒤 요소부터 맨 앞 요소까지 입니다. 즉, 배열의 뒷 요소 부터 재구성을 진행해주세요.
function divideArrayInHalf(array) { let result = []; for(let i = array.length; i>=0; i--){ if(array[i] <= 10){ result.unshift(array[i]); }else if(array[i] > 10){ result.push(array[i]); } } return result; }
배열의 뒷 요소부터 역순으로 재구성을 진행하기 위해 array.lenght부터 1 씩 감소하게 구현했고 10보다 작거나 같은 수는 앞 쪽에 큰 수는 뒤쪽에 요소를 추가하기 위해 unshift(배열 맨 앞에 요소수 추가), push(배열 맨 뒤에 요소 추가를 사용해 구현했다.
이론을 알아도 막상 코드를 구현해보니 전혀 이해가 되지를 않았고 구현하는 시간만 두시간 넘게 걸렸다. 저게 최선의 구현 방법인지도 모르겠지만 그래도 구동되는건 신기하다. 코드를 보면 이해가 가지만 그 전에 스스로 코드 구현하는게 매우 어렵다. 🥲 for문은 백번 넘게 봐야.. 좀 이해가 갈 듯 하다.