본문 바로가기
프론트엔드로 가는 길/프로그래머스

36. 프로그래머스_2차원으로 만들기

by woody-j 2023. 2. 5.

코딩일지

작성자
  최주희 작성일자 2022.02.05
세부 코딩 내용 https://school.programmers.co.kr/learn/courses/30/lessons/120842
활동 기간 2022.02.05
문제 정수 배열 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 array=[]
    for(let i=0; i<num_list.length; i+n){
    array.push(num_list.splice(i,n)) 
    }
return array
}
결과   통과
다른 풀이 function solution(num_list, n) {
    var answer = [];


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


    return answer;
}
function solution(num_list, n) {
    return Array(num_list.length / n).fill([]).map(() => num_list.splice(0, n))
}

이렇게 하면 성능이 조금 더 좋아지지 않을까요!
function solution(num_list, n) {
  let array = [];
  num_list.reverse();

  for (let i = 0; i <= num_list.length / n; i++) {
    const tempArray = [];

    for (j = 0; j < n; j++) {
      tempArray.push(num_list.pop());
    }

    array.push(tempArray);
  }

  console.log(array);
  return array;
}
const num_list = new Array(900_000).fill(0).map((_, index) => index + 1);
solution(num_list, 4);
 
해석    
키워드 코딩내용 생각
  1. 필요한 조건 정리


  • 배열을 나눌 n
  • 나눈 배열 병합 할 array






2. 풀이단계 정리


  • Splice 함수를 통해 기존 배열에 있던 원소를 앞에서 부터 차례대로 삭제
  • 삭제한 배열을 새로운 배열에 넣는다.