[Programmers] 2차원으로 만들기

그래도 해야지·2023년 5월 9일
0

Programmers

목록 보기
34/40
post-thumbnail

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

🤔 해설

  1. for문을 돌리는데 num_list.length / n 으로 나눈 만큼만 반복을 시킵니다.
    왜냐하면 배열의 길이가 8이고 n이 2라면 배열의 길이는 4가 되기 때문에 그때까지만 반복을 시켜주면 되기 때문입니다.
for(let i = 0; i < num_list.length / n; i++)
  1. answer배열에 push를 해서 배열들을 추가해주는데 num_list.slice()를 추가해줬다.
    num_list.slice()에선 beginend값을 설정해주는 것이 어려웠다.
    i가 1씩 늘어나면서 n만큼 곱해주면 다음 배열을 추가할 땐 0에서 시작, 2에서 시작.. 이런식으로 시작 지점을 정할 수가 있다.
    그리고 end는 begin보다 n만큼 더 큰 숫자만큼 잘라줘야하기 때문에(예를들어 begin이 2면 4까지 잘라줘야함)i * n + n을 해줬다.
answer.push(num_list.slice(i*n, i*n+n))

✅ 답

function solution(num_list, n) {
    const answer = [];
    
    for(let i = 0; i < num_list.length / n; i++) {
        answer.push(num_list.slice(i * n, i * n + n))
    }
    
    return answer;
}

0개의 댓글