상세 컨텐츠

본문 제목

Javascript 재귀 함수문제(4) - take

Programming Language/JavaScript

by Yongari 2022. 12. 11. 11:13

본문

문제

수(num)와 배열을 입력받아 차례대로 num개의 요소만 포함된 새로운 배열을 리턴해야 합니다.

입력

num : number 타입의 정수 (num >= 0)

arr : 임의의 요소를 갖는 배열


출력
순차적으로 num 개의 요소로 구성된 배열을 리턴해야 합니다.

입출력 예시

let output = take(2, [1, -2, 1, 3]);
console.log(output); // --> [1, -2]

output = take(5, [1, -2, 1, 3]);
console.log(output); // --> [1, -2, 1, 3]

 

풀이코드 설명

function take(num, arr) {
  // num이 0이거나 arr의 배열의 크기가 0일 경우 빈 배열을 반환한다.
  // 재귀함수의 탈출 조건
if (num === 0 || arr.length ===0){
  return [];
}
//다음과 같은 방식은 많이 쓰이는 패턴이다.
//head에는 배열의 첫번째 요소를 tail에는 배열의 2번째요소부터 마지막까지를 선언해주는 방식이다.
const head = arr[0];
const tail = arr.slice(1);


//head에 num-1과 tail을 입력인자로 재귀함수 호출
return [head].concat(take(num-1, tail));

}

 

풀이코드에서 쓰인 함수

Array.prototype.concat()

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/concat

 

 

Array.prototype.slice()

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/slice 

관련글 더보기