Notice
Recent Posts
Recent Comments
Link
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
Tags
more
Archives
Today
Total
관리 메뉴

joyful

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

프로그래머스

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

조이풀한 개발자 2024. 5. 17. 15:16

문제출처: https://school.programmers.co.kr/learn/courses/30/lessons/120842

 

 

 

 

 

 

문제


 

 

 

 

 

 

풀이

//첫번째 예제
function solution(num_list, n) {
  const result = [];

  for (let i = 0; i < num_list.length; ) {
    console.log(i); //0 2 4 6 (내부 반복문을 타면서 n(2)번 순회하고 i가 1씩 증감)
    const sliceArr = [];
    for (let j = 0; j < n; j++) {
      sliceArr.push(num_list[i]);
      i++;
    }
    result.push(sliceArr);
  }
  return result;
}

 

  • 반복문 2개를 돌린다.
  • i를 num_list.length 만큼 순회한다.  
  • 그 안에 j를 n번씩 순회하여 i를 새로운 배열에 넣는다.
  • 이 때 i는 1씩 증감시킨다. 

 

 

i의 값을 console.log로 찍어보니  '0 1 2 3 4 5 6 7'이 아니라 '0 2 4 6'으로만 나오는게 의아했는데,

내부 루프를 돌고 난 후에 기록되었기 때문이다. 

 

실행과정은 다음과 같다. 

 

 

실행 과정: 

 

1. 첫번째 외부 루프 

  • i는 0
  • j는 두번 순환 ( j = 0, 1 )
    - j = 0; 일 때 num_list[i]의 i는 0. 1씩 증감 ==> 1
    - j = 1; 일 때 num_list[i]의 i는 1. 1씩 증감 ==> 2
    -sliceArr에 담기 ==> [1, 2]

 

2. 두번째 외부 루프 

  • i는 2
  • j는 두번 순환 ( j = 0, 1 )
    - j = 0; 일 때 num_list[i]의 i는 2. 1씩 증감 ==> 3
    j = 1; 일 때 num_list[i]의 i는 3. 1씩 증감 ==> 4
    -sliceArr에 담기 ==> [3, 4]

3. 세번째 외부 루프 

  • i는 4
  • j는 두번 순환 ( j = 0, 1 )
    - j = 0; 일 때 num_list[i]의 i는 4. 1씩 증감 ==> 5
    j = 1; 일 때 num_list[i]의 i는 5. 1씩 증감 ==> 6
    -sliceArr에 담기 ==> [5, 6]

3. 네번째 외부 루프 

  • i는 6
  • j는 두번 순환 ( j = 0, 1 )
    - j = 0; 일 때 num_list[i]의 i는 6. 1씩 증감 ==> 7
    j = 1; 일 때 num_list[i]의 i는 7. 1씩 증감 ==> 8
    -sliceArr에 담기 ==> [7, 8]

 

네 번 돌고 외부 루프 종료.

따라서 결과는 [ [ 1, 2 ], [ 3, 4 ], [ 5, 6 ], [ 7, 8 ] ] 이다!