[JS] 2차원으로 만들기 programmers

0

코딩테스트

목록 보기
72/80
post-thumbnail

🎀 문제

정수 배열 num_list와 정수 n이 매개변수로 주어집니다. num_list를 다음 설명과 같이 2차원 배열로 바꿔 return하도록 solution 함수를 완성해주세요.

num_list[1, 2, 3, 4, 5, 6, 7, 8] 로 길이가 8이고 n2이므로 num_list2 * 4 배열로 다음과 같이 변경합니다. 2차원으로 바꿀 때에는 num_list의 원소들을 앞에서부터 n개씩 나눠 2차원 배열로 변경합니다.

function solution(num_list, n) {
    var answer = [[]];
    return answer;
}

🎀 내 답변

function solution(num_list, n) {
    var answer = [];
    let i = 0;
    while (true) {
        if (i >= num_list.length) {
            break;
        }
        answer.push(num_list.slice(i, i + n).flat());
        i += n;
    }
    return answer;
}
solution([100, 95, 2, 4, 5, 6, 18, 33, 948], 3);

❗️slice 해준 값을 answer 배열에 넣어주었더니 [ [[1,2]] ]이렇게 들어가졌다... 그래서 flat()이라는 함수를 사용해서 배열을 한번 합쳐주었다.

🎀 더 나은 답변

function solution(num_list, n) {
    var answer = [];

    while(num_list.length) {
        answer.push(num_list.splice(0,n));
    }

    return answer;
}

splice 함수를 이용하면 원본 배열이 변경되기 때문에, 굳이 몇번 부터 몇번까지 잘라야하는지 업데이트해 줄 필요 없다.

profile
일단 해. 그리고 잘 되면 잘 된 거, 잘 못되면 그냥 해본 거!

0개의 댓글