알고리즘
[프로그래머스] 택배 상자 꺼내기
moongi
2025. 5. 26. 16:52
728x90
반응형
https://school.programmers.co.kr/learn/courses/30/lessons/389478
프로그래머스
SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
문제 유형
- 구현
문제 레벨
- Lev1
문제분석
총 n개의 박스들이 있고, 가로로 w만큼 쌓고 지그재그로 상자를 놓고, 꺼내고자 하는 상자 num을 꺼내기 위해 몇 개의 상자를 꺼내야하는지를 출력하는 문제이다.
자기 자신을 포함해서 위에 쌓여있는 박스들을 모두 counting해서 출력해주면 되고, 나는 뒤집어서 배열처럼 쌓고 원하는 상자부터 x축이 끝까지 닿을때까지의 개수를 셌다.
간단한 문제라서 금방 풀었을 것이라고 생각한다.
전체 코드
import java.util.*;
import java.io.*;
/**
* 꺼내려는 상자를 포함
*/
class Solution {
public int solution(int n, int w, int num) {
int m = 0;
if(n % w != 0) {
m = n / w + 1;
} else {
m = n / w;
}
int[][] arr = new int[m][w];
int idx = 1;
label: for(int i = 0; i < m; i++) {
if((i & 1) == 0) {
for(int j = 0; j < w; j++) {
arr[i][j] = idx++;
if(idx > n) break label;
}
} else {
for(int j = w - 1; j >= 0; j--) {
arr[i][j] = idx++;
if(idx > n) break label;
}
}
}
int col, row, count = 0;
label: for(int i = 0; i < m; i++) {
for(int j = 0; j < w; j++) {
if(arr[i][j] == num) {
col = i;
row = j;
while (col < m && arr[col][row] != 0) {
count++;
col++;
}
break label;
}
}
}
return count;
}
}
728x90
반응형