function solution(n, w, num) {
const arr = [];
for(let i = 0; i < w; ++i){
arr.push(new Array());
}
let j = 0, cnt = 0;
for(let i = 0; i < n; ++i) {
if(j === w) {
j = 0;
cnt++;
}
switch(cnt % 2){
case 0:
arr[j].push(i + 1);
break;
case 1:
arr[Math.abs(j-w+1)].push(i + 1);
break;
}
j++;
}
let answer = 0;
arr.map(items => {
items.map((item, idx) => {
if(item === num){
answer = items.length - idx;
return;
}
})
})
return answer;
}
처음에는 배열을 초기화할 때
const arr = new Array(w).fill([]);
이런 식으로 작성을 했는데 for문을 한번 돌리는데도 불구하고 모든 배열에 숫자가 다 들어가는 현상이 발생했다.
그래서 찾아보니까 모든 빈 배열 요소가 같은 값을 참조해서 생기는 현상이라고 했다.
그래서 새로운 배열 객체를 가질 수 있도록
const arr = [];
for(let i = 0; i < w; ++i){
arr.push(new Array());
}
이렇게 변경하였다.