[Lv.0] 2차원으로 만들기 *

01수정·2022년 11월 14일
0
post-thumbnail

<입문 100문제> Day 10 - 조건문, 배열, 수학, 시뮬레이션

문제



풀이

1) 원본 변형 : O
- slice 는 배열을 얕은 복사 해서 새로운 배열로 반환
- splice 는 배열의 기존 요소를 추가, 변경, 삭제해 원본 배열을 변경

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

2) 원본 보존 : O

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

해답

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

해답풀이

1) num_list.length 가 아닌 (num_list.length / n) 회 반복 :
0부터 num_list.length 까지 모든 원소를 하나하나 돌며 result 에 넣는게 아니라, num_list 각각의 원소를 한 번에 n 개씩 묶어서 result 에 넣기 때문
예) n=2 일 경우, (0~2), (3~5), (6~8), ...

for (let i = 0; i < num_list.length / n; i++) { ... }

2) 전개 연산자(spread operator) 를 이용해 result 배열 복사하여 병합

for (let i = 0; i < num_list.length / n; i++) {
    result = [...result, num_list.slice(i * n, i * n + n)];
}

참고자료

profile
새싹 FE 개발자

0개의 댓글