프로그래머스 JS LV0

LV0 53 2차원으로 만들기

와라리요 2022. 10. 21. 15:12

문제

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

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

 

입출력 예

num_list n result
[1, 2, 3, 4, 5, 6, 7, 8] 2 [[1, 2], [3, 4], [5, 6], [7, 8]]
[100, 95, 2, 4, 5, 6, 18, 33, 948] 3 [[100, 95, 2], [4, 5, 6], [18, 33, 948]]

 

나만의 풀이

  진짜 아침에 멍하긴 했나보다... 우선 문제를 풀기 위해서는 매개변수로 주어지는 n의 개수만큼 배열을 자른 후 다시 배열 안에 넣어야 하는 문제이다. 그래서 처음에는 쇼를 했다 쳤다. for문을 사용해 배열을 다시 만들어 push 할 준비를 하고 안에 for문을 만들어 조건대로 값을 지역변수 배열 안에 넣고 for문이 완료되면 리턴하는 식으로 풀었다.

function solution(num_list, n) {
    let answer = [];
    for (let i = 1; i <= num_list.length / n; i++) {
        let arr = [];
        answer.push(arr)
        for (let j = 0; j < n; j++) {
            let num = i * n - (n -1);
            arr.push(num_list[num + j - 1])
        }
    }
    return answer;
}

  와 그런데 지금 보니깐... 내장함수 splice()가 생각이 난다... splice를 이용해 매개변수 n의 숫자만큼 자른 뒤 전역 변수 안에 배열을 push 하면 끝이 나는 문제였다...

function solution(num_list, n) {
    let answer = [];
    while (num_list.length) {
        answer.push(num_list.splice(0, n))
    }
    return answer;
}

  다시는 멍한 상태로 문제 풀지 말아야지... 코드 길이가 2배나 난다...

'프로그래머스 JS LV0' 카테고리의 다른 글

LV0 55 중복된 문자 제거  (0) 2022.10.22
LV0 54 합성수 찾기  (0) 2022.10.22
LV0 52 피자 나눠 먹기 (2)  (0) 2022.10.21
LV0 51 암호 해독  (0) 2022.10.21
LV0 50 7의 개수  (0) 2022.10.20