우당탕탕 개발일지
[프로그래머스] 택배 상자 꺼내기 (Lv.1, Java) 본문
반응형
문제
n: 박스 개수
w: 한줄에 박스 개수
num: 빼고 싶은 박스 번호
풀이
boxArr 2차배열에 제시된 그림처럼 박스 번호를 저장했다.
짝수와 홀수에 따라서 저장되는 식을 만들어 넣었다
짝수: w * i + (j+1)
홀수: w * (i+1) - j
저장하면서 꺼내려고 하는 박스 번호와 마지막 박스 번호를 각각의 변수에 저장했다.
꺼내려고 하는 박스위에 몇줄이 있는지 확인하고 그 값을 출력하면 끝..!
이 과정이 너무 오래걸림.... ㅠ
다른 사람 코드를 보니 배열에 저장하는 경우는 없었다... 넘 무식하게 푼것 같다...ㅎ
다른 방법을 공부해봐야겠다.
최종 코드
class Solution {
public int solution(int n, int w, int num) {
int h = n/w + (n%w==0? 0 : 1);
int[][] boxArr = new int[h][w];
int[] boxpo = new int[2]; // 박스 위치;
int[] lastboxpo = new int[2]; // 마지막 박스 위치;
for(int i=0; i<h; i++) {
for(int j=0; j<w; j++) {
System.out.println("i: " + i + " & j: " + j);
if(i % 2 == 0) {
// 짝수 줄
boxArr[i][j] = w * i + (j + 1);
} else {
// 홀수 줄
boxArr[i][j] = w * (i + 1) - j;
}
if(boxArr[i][j] == num) {
// 현재 박스 번호 == 꺼내려고 하는 수
boxpo[0] = i;
boxpo[1] = j;
} else if(boxArr[i][j] == n) {
// 현재 박스 번호 == 마지막 박수 번호
lastboxpo[0] = i;
lastboxpo[1] = j;
}
}
}
if(boxArr[lastboxpo[0]][boxpo[1]] <= n) {
return lastboxpo[0] - boxpo[0] + 1;
} else {
return lastboxpo[0] - boxpo[0];
}
}
}
프로그래머스 문제
https://school.programmers.co.kr/learn/courses/30/lessons/389478
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
반응형
'코테 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 서버 증설 횟수 (Lv.2, Java) (1) | 2025.03.20 |
---|---|
[프로그래머스] 정수를 나선형으로 배치하기(Java, Level.0) (1) | 2025.03.17 |
[프로그래머스] 더 맵게(Java, Level.2) (1) | 2025.02.10 |
[프로그래머스] 프로세스 (Java, Level.2) (1) | 2025.02.04 |
[프로그래머스] 장균의 크기에 따라 분류하기 1 (MySQL, Level.3) (0) | 2025.02.04 |