[Programmers / Level 1] 389478. 택배 상자 꺼내기 (Java)

이하얀·5일 전
0

🕊️ 프로그래머스

목록 보기
96/97

💡 Info




입출력 조건



$



입출력 예시




문제 이해


  • 주어지는 택배 상자 개수와 가로로 놓는 상자 개수, 택배 상자 번호를 통해 꺼내야 하는 상자의 총 개수를 반환하면 되는 문제


알고리즘


풀이 시간 : 27분

  • 창고 배열 생성 + 택배 상자를 지그재그로 배치
  • num으로 행렬 찾기
  • num이 있는 열에서 위에 있는 모든 상자의 개수를 세서 반환
class Solution {
    public int solution(int n, int w, int num) {
        int h = (int) Math.ceil((double) n / w);

        int[][] warehouse = new int[h][w];
        
        int index = 1;
        for (int i = 0; i < h; i++) {
            if (i % 2 == 0) { // 왼쪽 -> 오른쪽
                for (int j = 0; j < w && index <= n; j++) {
                    warehouse[i][j] = index++;
                }
            } else { // 오른쪽 -> 왼쪽
                for (int j = w - 1; j >= 0 && index <= n; j--) {
                    warehouse[i][j] = index++;
                }
            }
        }

        int targetRow = -1, targetCol = -1;
        
        for (int i = 0; i < h; i++) {
            for (int j = 0; j < w; j++) {
                if (warehouse[i][j] == num) {
                    targetRow = i;
                    targetCol = j;
                    break;
                }
            }
            if (targetRow != -1) break;
        }

        int count = 0;
        for (int i = h - 1; i >= targetRow; i--) {
            if (warehouse[i][targetCol] != 0) count++;
        }
        
        return count;
    }
}


결과


profile
언젠가 내 코드로 세상에 기여할 수 있도록, BE&Data Science 개발 기록 노트☘️

0개의 댓글

관련 채용 정보