알고리즘 - number array flat 시키기

코드샌드박스

문제 1

[1, [2, 3], [4, 5]]를 모두 flat 해보세요

답안

function flat(numbers) {
  var answer = [];
  answer = numbers;
  answer = answer.flatMap((v) => v);
  return answer;
}

console.log("문제 1:", flat([1, [2, 3], [4, 5]]));

답안 설명: 간단하게 flatMap을 쓰면 1 depth array까지는 flatten이 가능하다.

문제 2

[1, [2, 3], [4, 5], [4, [5, 6, [6, 7]]]]를 모두 flat 해보세요

답안

function flatAll(numbers) {
  var answer = [];
  answer = numbers;
  while (answer.some((v) => Array.isArray(v))) {
    answer = answer.flatMap((v) => v);
  }
  return answer;
}

console.log("문제 2:", flatAll([1, [2, 3], [4, 5], [4, [5, 6, [6, 7]]]]));

답안 설명: depth 가 무한개일때라고 가정 할때, 모두 flatten작업이 들어가야 하므로, some 함수를 사용하여 하나라도 array type인 것을 걸러낸다. 따라서 answer값을 계속 검사하여 하나라도 array type을 가질때까지 모두 flat 작업을 계속 한다.

← Go home