[2025 프로그래머스 코드챌린지 2차 예선] 택배 상자 꺼내기
[2025 프로그래머스 코드챌린지 2차 예선] 택배 상자 꺼내기
🙋♂️ 들어가며
제출이 안되던 이유가 알고보니 2차원 배열 arr[r][c]을 만든 상태에서 나는 특정 상자의 idx인 r+1만 구했기에 안된 것이다
배열에는 빈공간이 0으로 채워져있기에 실제로는 0을 빼고 합산해줘야 했던 것이다.
코드는 다음과 같다
✅ 정답
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
class Solution {
public int solution(int n, int w, int num) {
int row = 0;
if (n % w == 0) {
row = n / w;
}
else if (n % w != 0) {
row = (n / w) + 1;
}
int col = w;
int[][] arr = new int[row][col];
// 1. 배열 초기값 생성
int digit = 1;
int r = 0;
while (digit <= n) {
for (int c = 0; c < col; c++) {
// 종료
if (digit > n) break;
// 값 할당
if (r % 2 == 0) {
arr[row-1-r][c] = digit;
}
if (r % 2 == 1) {
arr[row-1-r][col-1-c] = digit;
}
digit++;
}
r++;
}
// 0을 제외하고 찾아야하니 해당 박스의 row와 col을 찾자.
int box_r = 0;
int box_c = 0;
for (int i = 0; i < row; i++) {
boolean done = false;
for (int j = 0; j < col; j++) {
if (arr[i][j] == num) {
box_r = i;
box_c = j;
done = true;
break;
}
}
// 조기종료
if (done) break;
}
// 수직으로 행만 확인 (0은 빈공간이니 제외)
int cnt = 0;
for (int i = 0; i < box_r+1; i++) {
if (arr[i][box_c] == 0) continue;
cnt++;
}
return cnt;
}
}
This post is licensed under CC BY 4.0 by the author.

