joyful
[Javascript] 2차원으로 만들기 - 프로그래머스 본문
문제출처: 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 ] ] 이다!
'프로그래머스' 카테고리의 다른 글
[Javascript] 배열 회전시키기 - 프로그래머스 (2) | 2024.06.13 |
---|---|
[Javascript] 공 던지기 - 프로그래머스 (0) | 2024.06.12 |
[Javascript] 점의 위치 구하기 - 프로그래머스 (0) | 2024.04.19 |
[Javascript] 가위 바위 보 - 프로그래머스 (0) | 2024.04.19 |
[Javascript] 모스부호 (1) - 프로그래머스 (0) | 2024.04.18 |