배열을 입력받아 모든 요소의 합을 리턴
let output = arrSum([-1, -2, 1, 3]);
console.log(output); // --> 1
function arrSum(arr) {
if(arr.length === 0) return 0;
const head = arr[0];
const tail = arr.slice(1);
return head + arrSum(tail);
}
✅ 문제에서 주어진 힌트를 보고 구현 할 수 있었다. 이런 문제 접근 방식에 익숙해지자!
배열을 입력받아 그 길이를 리턴
let output = arrLength([1, -2, 1, 3]);
console.log(output); // --> 4
arr.length
사용 금지arr.isEmpty()
를 통해 배열이 비어있는지 확인 가능function arrLength(arr) {
if(arr.isEmpty()) return 0;
return 1 + arrLength(arr.slice(1));
}
/*
arr = [1, 2, 3] 인 경우,
arr.isEmpty()는 false 이므로 if문은 건너뛰고
return에 걸린 1 + arrLength([2,3]) 실행
arrLength([2,3]) -> return 1 + arrLength([3])
arrLength([3]) -> return 1 + arrLength([])
arrLength([]) -> arr.isEmpty()가 true 이므로 return 0
1 + arrLength([2,3])
1 + 1 + arrLength([3])
1 + 1 + 1 + arrLength([])
1 + 1 + 1 + 0
리턴 값은 3!
*/
수(num
)와 배열을 입력받아 차례대로 num
개의 요소가 제거된 새로운 배열을 리턴
let output = drop(2, [1, -2, 1, 3]);
console.log(output); // --> [1, 3]
output = drop(5, [1, -2, 1, 3]);
console.log(output); // --> [ ]
num
과 arr.length
중 최소값만큼 제거