본문 바로가기
Algorithm Problem/JavaScript

[JavaScript Algorithm] 배열 순회 / L사 면접 문제

by 꾸압 2022. 5. 12.

 

<문제>

1
2
3
4
5
6
7
8
var input = [1undefined, [2, [34, [56]]], NaN7, {a:"b"}, 8];
function func(arr) {
    return arr;
}
// output 아래 배열 처럼 출력
console.log(input);
// output
// [1, undefined, 2, 3, 4, 5, 6, NaN, 7, {a:"b"}, 8];
cs

 

<본인 풀이>

여러 방법을 써봤으나 원본의 풀이인 재귀 호출이 아닌 다른 방법으로 풀 수가 없었다.

 


 

<원본 블로거 풀이>

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
var input = [1undefined, [2, [34, [56]]], NaN7, {a:"b"}, 8];
 
function func(arr) {
    var tempArr = [];
    function arrLoop(item) {
        for(var i = 0; i < item.length; i++) {
            if(typeof item[i] === "object" && item[i].length) {
                // item[i] 타입이 object이며, length property가 있는지
                // 다시 확인하여 Array 구분
                arrLoop(item[i]);
                //조건에 맞다면 array 기에 arrLoop 재귀 호출
                // arrLoop를 재귀 호출하면 새로운 scope 가 생성되어, 
                // 기존 호출 함수와 독립적으로 동작
            }
            else {
                tempArr.push(item[i]);
                // 조건 불일치 시 임시 변수에 할당
            };
        };
    };
    arrLoop(arr);
    var arr = tempArr;
    // 임시 변수를 arr 변수에 재할당
    return arr;
};
 
console.log(func(input));
// output
// [1, undefined, 2, 3, 4, 5, 6, NaN, 7, {a:"b"}, 8];
cs

 


 

<참조>  https://blog.skydown.co.kr/develop/36

 

배열 순회 - blog.skydown

L사 면접에서 진행된 라이브 코딩 문제 입니다.어렵진 않은거 같은데 이미 사전 질문들에서 머리가 하얗게 변해버려서 풀지 못한 ㅠㅠ문제 (실제 문제와 동일하지 않습니다.)var input = [1, undefined,

blog.skydown.co.kr

 

 

 

댓글