일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 트러블슈팅
- 회고록
- 기록
- 한이음
- kafkaconsumer
- git
- codingtest
- 선택정렬
- 자료구조
- 코딩테스트
- SpringSecurity
- 백준
- kafka
- testcode
- jwt
- 문자열압축
- c
- IT
- 알고리즘
- 코테
- 기술블로그
- 자바
- java
- 시스템프로그래밍
- AWS
- 공부기록
- 협업도구
- 문자열함수
- Django
- github
Archives
- Today
- Total
신뇽이 되어보자
[프로그래머스] 택배 상자 꺼내기 본문
728x90
내 코드
class Solution {
public int solution(int n, int w, int num) {
int answer = 0;
int cnt = 1;
int rr = 0;
int dd = 0;
// 행의 개수를 정확하게 계산
int rows = (n % w == 0) ? (n / w) : (n / w) + 1;
int [][]arr = new int[rows][w];
//n: 택배 상자의 개수를 나타내는 정수
//w: 가로로 놓는 상자의 개수
for(int i = 0; i < rows; i++){
if(i % 2 == 1){ //홀수 층일 때
for(int j = w - 1; j >= 0; j--){
arr[i][j] = cnt;
if(cnt == n){
break;
}
else if(cnt == num){
rr = i;
dd = j;
}
cnt++;
}
}else{//짝수 층이라면?
for(int j = 0; j < w; j++){
arr[i][j] = cnt;
if(cnt == n){
break;
}
else if(cnt == num){
rr = i;
dd = j;
}
cnt++;
}
}
}
for(int k = rows -1 ; k >= rr; k--){
if(arr[k][dd]!=0){
answer++;
}
}
return answer;
}
}
놓친 점
1.
층 수를 계산할 때
n%w가 0이 되면 배열이 끝까지 다 찾다는 소리이고
아니라면 n/w한 것에다가 1을 더해줘야한다.
근데 나는 후자만 생각을 했었다.
그래서 테스트 코드 몇 가지만 통과하는 결과를 얻게 되었다.
2.
arr배열에 cnt를 넣기 전에 cnt가 num이랑 같다면 break를 하라는 if문을 넣어버려서
arr에 cnt가 num일 경우에 값을 넣지 못하는 불상사가 발생했다.
이 두가지를 해결해주니 통과 완료!
https://school.programmers.co.kr/learn/courses/30/lessons/389478
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
728x90
'CodingTest' 카테고리의 다른 글
[프로그래머스] 공원 산책 (0) | 2025.03.07 |
---|---|
[프로그래머스] 코드 처리하기(코딩 기초 트레이닝) (0) | 2025.02.28 |
[프로그래머스] 배열 만들기 2 (코딩 기초 트레이닝) (0) | 2025.02.28 |
[프로그래머스] 단어 변환(bfs) (1) | 2025.02.27 |
[프로그래머스] 게임 맵 최단 거리 구하기 (bfs) (0) | 2025.02.26 |