Array Deep Count ( 6 kyu )

문제

Array.prototype.length will give you the number of top-level elements in an array.

Your task is to create a function deepCount that returns the number of ALL elements within an array, including any within inner-level arrays.

For example:

deepCount([1, 2, 3]);
//>>>>> 3
deepCount(["x", "y", ["z"]]);
//>>>>> 4
deepCount([1, 2, [3, 4, [5]]]);
//>>>>> 7

배열에서 내부의 배열 인자개수까지 모두 세는 문제

풀이

function deepCount(a){
  let count = 0;
  const recursion = arr => {
    count += arr.length;
    for ( let i of arr ) {
      if ( Array.isArray(i) ) {
        recursion(i);
      }
    }
  }
  recursion(a);
  return count;
}

재귀를 통해 인자가 배열이면 함수를 다시 호출하는 방법

다른 사람의 풀이

function deepCount(a){
  return a.reduce((s,e)=>s+(Array.isArray(e)?deepCount(e):0),a.length);
}

위에 있는 코드를 압축해놓으면 딱 이모양인데 멋있는 코드


'자료구조, 알고리즘 > Codewars 문제' 카테고리의 다른 글

Integer depth ( 6 kyu )  (0) 2018.01.10
Simple reversed parenthesis ( 6 kyu )  (0) 2018.01.09
Array Deep Count ( 6 kyu )  (0) 2017.12.27
Fibonacci, Tribonacci and friends ( 6 kyu )  (0) 2017.12.23
What is the growth? ( 6 kyu )  (0) 2017.12.22
Dashatize it ( 6 kyu )  (0) 2017.12.20

+ Recent posts