알고리즘 - number array flat 시키기
알고리즘 - 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