function solution(num_list, n) {
let result = []
let arr = []
for (i = 0; i < num_list.length; i += n) {
arr.push(num_list.slice(i, i + n))
//result.push(num_list.slice(i, i + n))
}
let resultLen = Math.ceil(num_list.length / n)
for (i = 0; i < resultLen; i++) {
result.push(arr[i])
}
return result
}
정수 배열 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차원 배열로 변경합니다.
num_list를 n개씩 잘라서 push해주면 되지 않을까? 생각은 맞았다 하지만 문제가 좀 있다 다른 사람들의 코드를 보니까 내 가 작성한 코드는 작동엔 문제가 없지만 군더더기가 많아 길다는 것이다 그래서 다시 생각하니 주석으로 처리했다면 변수 arr을 만들 필요도 밑에 코드들도 필요가 없었다
그리고 추가로 알게 된 것은 splice(), slice()의 차이를 다시 생각나게 해주는 것과 splice()의 활용 부분이었다 원본 배열에 영향을 주냐 안주냐 하는 두 메서드의 차이는 배웠지만 잊어버리고 있었다
splice()의 활용은 단순히 배열을 바꿔치기 해주는 메서드로만 생각했었는데 다른 변수에 대입하면 제거할 부분을 그 변수에 할당할 수 있었다
정리
- splice(), slice()는 원본 배열에 영향을 주냐 안주냐가 가장 큰 차이점이다
- splice()는 단순히 바꿔치기용이 아니라 그 바꿀 부분을 다른 변수에 할당할 수 있다 이렇게하면 원본 배열도 바뀌기 때문에 배열이 쪼개진다
'오늘 뭐했냐 > 기억하면 좋을 문제들' 카테고리의 다른 글
| 배열의 앞 뒤 추가 제거 (0) | 2023.06.14 |
|---|---|
| 정해진 수의 반복 (0) | 2023.06.14 |
| BigInt() 혹은 Math.round() 숫자 값이 클 때 (0) | 2023.06.14 |
| 객체 활용 (0) | 2023.06.13 |
| 모스 부호 (0) | 2023.06.13 |