본문 바로가기
Beakjoon&프로그래머스/Java

[프로그래머스/Java] 택배 상자 꺼내기

by 현장 2026. 3. 25.

-Code

class Solution {
    public int solution(int n, int w, int num) {
        int[][] boxs = new int[n / w + 1][w];
        int numCol = 0;
        for (int i = 0; i < n; i++) {
            // row의 값 셋팅
            int row = i / w;
            // col의 값 셋팅 (지그재그로 움직이므로 row에 따른 위치 셋팅)
            int col = row % 2 == 0 ? i % w : (w - 1) - (i % w);
            boxs[row][col] = i + 1;
            // 꺼내야 할 상자면 col위치 저장
            if(i + 1 == num) {
                numCol = col;
            }
        }
        // 꺼내야할 상자 갯수 구하기
        int answer = 0;
        for (int r = n / w; r >= 0; r--) {
            // 상자가 있으면 꺼내기
            if (boxs[r][numCol] != 0) {
                answer++;
            }
            // 빼야할 상자면 탈출
            if (boxs[r][numCol] == num) {
                break;
            }
        }
        return answer;
    }
}