⌨️ 프로그래머스/코딩테스트 입문

[프로그래머스] 2차원으로 만들기 ✌︎ | JS

하나둘세현 2024. 7. 11. 11:35
728x90

문제

정수 배열 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차원 배열로 변경합니다.

해결 과정

구글링을 통해서 문제를 해결했다. 

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

// 오류 있는 코드
// function solution(num_list, n) {    
//   let answer = [];
//    while(num_list.length)
//        answer.push(num_list.splice(num_list, n))
//    return answer;
// }
// why? splice안에서 num_list로 작성했는데 배열 자체가 되기에 오류이다. 하지만 정답처리는 되긴했다.

 

문제에서 하고 싶은 말은 num_list의 배열을 n개씩 묶어서 2차원 배열로 만드는 것이다. 

위의 코드를 분석해보겠다.

 

let answer에 빈배열을 선언한뒤 while문에서 num_list의 길이만큼 반복한다.

num_list의 splice로 나눈다. splice는 splice(start, end)로 사용된다. 

splice안에서 start는 배열을 시작할 인덱스, end는 배열에서 제거할 인덱스 요소의 수인것이다.

 

즉, splice에서 start로 시작해 end씩 제거한후 answer 배열에 추가하는 것이다.

 

그래서 위와 같이 작성한 것이다.

 

https://stackoverflow.com/questions/22464605/convert-a-1d-array-to-2d-array

 

Convert a 1D array to 2D array

I am working on a program where I have to read the values from a textfile into an 1D array.I have been succesfull in getting the numbers in that 1D array. m1=[1,2,3,4,5,6,7,8,9] but I want the ar...

stackoverflow.com

 

splice에 대한 설명

https://ko.javascript.info/array-methods

 

배열과 메서드

 

ko.javascript.info

 

 

 

728x90