문제
- 정수 배열 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 | result |
[1, 2, 3, 4, 5, 6, 7, 8] | 2 | [[1, 2], [3, 4], [5, 6], [7, 8]] |
[100, 95, 2, 4, 5, 6, 18, 33, 948] | 3 | [[100, 95, 2], [4, 5, 6], [18, 33, 948]] |
나만의 풀이
진짜 아침에 멍하긴 했나보다... 우선 문제를 풀기 위해서는 매개변수로 주어지는 n의 개수만큼 배열을 자른 후 다시 배열 안에 넣어야 하는 문제이다. 그래서 처음에는 쇼를 했다 쳤다. for문을 사용해 배열을 다시 만들어 push 할 준비를 하고 안에 for문을 만들어 조건대로 값을 지역변수 배열 안에 넣고 for문이 완료되면 리턴하는 식으로 풀었다.
function solution(num_list, n) {
let answer = [];
for (let i = 1; i <= num_list.length / n; i++) {
let arr = [];
answer.push(arr)
for (let j = 0; j < n; j++) {
let num = i * n - (n -1);
arr.push(num_list[num + j - 1])
}
}
return answer;
}
와 그런데 지금 보니깐... 내장함수 splice()가 생각이 난다... splice를 이용해 매개변수 n의 숫자만큼 자른 뒤 전역 변수 안에 배열을 push 하면 끝이 나는 문제였다...
function solution(num_list, n) {
let answer = [];
while (num_list.length) {
answer.push(num_list.splice(0, n))
}
return answer;
}
다시는 멍한 상태로 문제 풀지 말아야지... 코드 길이가 2배나 난다...
'프로그래머스 JS LV0' 카테고리의 다른 글
LV0 55 중복된 문자 제거 (0) | 2022.10.22 |
---|---|
LV0 54 합성수 찾기 (0) | 2022.10.22 |
LV0 52 피자 나눠 먹기 (2) (0) | 2022.10.21 |
LV0 51 암호 해독 (0) | 2022.10.21 |
LV0 50 7의 개수 (0) | 2022.10.20 |