반응형
코딩테스트 2차원으로 만들기
문제 설명
출력 예시
num_list란 배열과 정수 n이 주어집니다.
배열의 요소를 차례대로 n개씩 묶어 2단 배열 구조로 바꿔보세요~ 라는 문제네요.
바로 풀이 들어갑니닷!
const num_list = [1, 2, 3, 4, 5, 6, 7, 8];
let n = 2;
var answer = [];
let len = num_list.length;
for(let i=0; i<len/n; i++){
}
제한사항에서
- num_list의 길이는 n의 배 수개입니다.
라고 하니 for문을 num_list 길이를 n만큼 나누면 딱 필요한 만큼 반복을 하겠네요.
n이 정수 2니까 num_list 배열을 두개씩 묶어 answer 변수에 넣으면 될거 같습니다.
최종 목표는 [[1, 2], [3, 4], [5, 6], [7, 8]] 를 만들어 주는겁니다!
바로 반복문 내용을 채워보겠습니다.
const num_list = [1, 2, 3, 4, 5, 6, 7, 8];
let n = 2;
var answer = [];
let len = num_list.length;
for(let i=0; i<len/n; i++){
answer[i] = []; //[i] 자리에 빈 배열추가
for(let j=0; j<n; j++){
answer[i][j] = num_list.shift() //shift()를 사용하여 맨 앞 요소만 넣기
}
}
//[[1, 2], [3, 4], [5, 6], [7, 8]]
여기서 고생좀 했습니다..
분명 answer[i][j] = num_list.shift() 를 했는데 answer 배열안에 요소가 안채워지는 문제가 있었는데,
문제 원인은 배열안에 빈 배열이 없었다는 점.
빈 배열을 만들어 자리를 터주니 바로 슝슝 요소가 잘 들어갔습니다!!
저 작은 문제가 시간을 많이 잡아먹었습니다 ㅜㅜ