개발로그필름

[프로그래머스] 2차원으로 만들기 javascript 본문

coding test/프로그래머스

[프로그래머스] 2차원으로 만들기 javascript

yuullog 2023. 4. 25. 12:13
728x90
반응형
SMALL

https://school.programmers.co.kr/learn/courses/30/lessons/120842

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

 

문제

 

 

나의 풀이

function solution(num_list, n) {
    var answer = [];
    for(i=0; i<num_list.length; ){
        var array = [];
        for(j=0; j<n; j++){
            array.push(num_list[i]);
            i++
        }
        answer.push(array)
    }
    return answer;
}

for문으로 전체 num_list를 돌면서

또다른 array 배열을 만들어 2차원 배열을 만드는 for문 작성

n만큼 돌면서 array에 num_list 원소를 push 하고 모든 for문이 끄탄면

answer에 push해서 return

 

 

다른 사람 풀이

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

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

이번 기회에 splice() 메서드를 처음 알게 되었다,, ㅎㅎ

splice() 자세한 설명은 밑에 참고!!

num_list 길이 만큼 반복하면서

맨처음 num_list.splice(0,n)을 하게 되면 이 코드 자체는 [1,2]이고 그 말은 [1,2]를 삭제한다는 뜻이므로

num_list에는 [3,4,5,6,7,8]이 남게 된다

또한 [1,2]를 answer에 push 했으므로 answer 배열에는 [1,2]가 들어가게 된다

이걸 계속 반복하면 [3,4] [5,6] [7.8] 이 각각 answer에 push 되어 최종적으로 2차원 배열 anser을 return 할 수 있다

정말 놀랍고 신기하고 많이 배웠던 풀이!!

 

 

 

splice()

배열의 기존 요소를 삭제 또는 교체하거나 새 요소를 추가하여 배열의 내용을 변경

array.splice(start[, deleteCount[, item1[, item2[, ...]]]])

 

start

시작 인덱스

 

deleteCount

제거할 요소의 수

 

item1, item2, <em>...</em>

배열에 추가할 요소

아무것도 지정하지 않으면 제거만 한다

 

 

 

 

반응형
LIST
Comments