[프로그래머스] Level 1 택배 상자 꺼내기 - 2025 프로그래머스 코드챌린지 2차 예선

Jun·2025년 2월 26일

알고리즘

목록 보기
1/19

문제 링크

바로가기

문제 풀이

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());
}

이렇게 변경하였다.

profile
2D | 3D 프론트엔드 개발자

0개의 댓글