07_arrLength

TK·2022년 6월 27일

[코플릿] 재귀

목록 보기
7/9

💬 문제

배열을 입력받아 그 길이를 리턴해야 합니다.

📁 입력

  • 인자 1 : arr
    임의의 타입을 요소로 갖는 배열

📂 출력

  • number 타입을 리턴해야 합니다.
  • arr.length

주의 사항

  • 함수 arrLength는 재귀함수의 형태로 작성합니다.
  • 반복문(for, while) 사용은 금지됩니다.
  • 입력받은 배열은 함수의 호출 뒤에도 처음 상태를 유지해야 합니다(immutability).
  • arr.length 사용은 금지됩니다.
  • arr.isEmpty()를 통해 배열이 비어있는지 확인할 수 있습니다.
    • 해당 메소드는 표준 자바스크립트 내장 메소드가 아니며, 문제를 위해 새롭게 정의된 커스텀 메소드입니다. 이 문제에서만 사용하시길 바랍니다.
    • [ ].isEmpty() === true
    • [1, 2].isEmpty() === false
  • 빈 배열의 길이는 0입니다.

📺 입출력 예시

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

정답 및 나만의 해석

function arrLength(arr) {
  if (arr.isEmpty()) {				// 내장 메서드로 빈 배열인지 확인하고
    return 0;						// 빈 배열이면(true) 0을 리턴한다.
  }

  // const [head, ...tail] = arr;
  const tail = arr.slice(1);		// tail이라는 변수에 배열 첫번째 원소만 제외한 나머지 원소들을 할당한다.
  return 1 + arrLength(tail);		// 1(한바퀴 돌 때마다 1을 카운트하는 개념) + 나머지 배열
}
                                                        

📝 한줄평

원소 하나씩을 제외하면서 1을 카운트업 해주면 나중에 원소가 하나도 없을때까지 돈다면 원소의 개수n개만큼 n번 카운트 되었으니 길이 n을 반환할 수 있다. 빈배열이면 0을 리턴하면서 끝난다.

profile
쉬운게 좋은 FE개발자😺

0개의 댓글