반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- 스트림
- Oracle
- 로컬에서 플러그인 추가
- office ltsc standard 2021
- officedeploymenttool2021
- Java
- sql 테스트 사이트
- intellij 플러그인 개발
- java 로 intellij 플러그인
- 쿼리실행순서
- hibernate 쿼리실행 순서
- Flush
- 쓰기지연저장소
- plugin local
- 쓰기지연sql저장소 쿼리실행순서
- 오라클쿼리테스트사이트
- Kafka
- intellij 플러그인 만들기
- officedeploymenttool
- IntelliJ
- group by group by rollup 차이
- error code 0-2054
- JPA
- Stream
- 플러그인 로컬 테스트
- error code 0-2054(0)
- error code 0-2048-(0)
- 쿼리테스트사이트
- error code 0-2048
- 자바
Archives
- Today
- Total
개린이 탈출기
[코테연습] 택배 상자 꺼내기 본문
728x90
반응형
SMALL
문제 : 택배 상자 꺼내기
https://school.programmers.co.kr/learn/courses/30/lessons/389478
작성한 코드
class Solution {
public int solution(int n, int w, int num) {
int answer = 0;
// 꽉 찬 줄과 마지막 줄은 boolean 배열로 표현
int fullRow = n/w;
int restBox = n%w;
boolean [] finalRow = new boolean [w];
// 마지막 줄 중 박스가 존재하는 열은 true
for(int k=0; k<restBox; k++) {
if(fullRow%2==0) { // 꽉찬 줄이 짝수라면
finalRow[k] = true; // 마지막 줄은 왼쪽부터 채움
} else {
finalRow[w-1-k] = true;
}
}
// 꺼내려는 상자 위치 파악을 위한 정보
int targetRow = num%w == 0 ? num/w : num/w +1;
int targetRestBox = num%w;
int targetColIdx;
// 꽉찬 줄 기준으로 꺼내야 하는 상자 개수
answer = fullRow-targetRow+1;
// 꺼내려는 상자의 열 위치 구하기
if(targetRow%2 != 0) { // 홀수 줄이라면 왼쪽부터 열 카운팅
targetColIdx = targetRestBox == 0 ? w-1 : num%w - 1;
} else {
targetColIdx = targetRestBox == 0 ? 0 : w-targetRestBox;
}
// 타겟 상자 열 위치로 마지막 줄 동일한 열에 상자 유무 체크
if(finalRow[targetColIdx]) answer++;
return answer;
}
}
처음 2차원 배열로 코드를 작성하다가 중첩 for문을 사용하는 순간 정신을 차렸다.
생각해보니 마지막 줄의 경우만 상자 유무를 따져보면 될 것 같아서 이중 for문을 피하고 1차원 배열을 사용했다.
728x90
반응형
LIST
'일상메모' 카테고리의 다른 글
[코테연습] 동영상 재생기 (0) | 2025.03.24 |
---|---|
[코테연습] 유연근무제 (이차배열) (0) | 2025.03.24 |
[코테연습] (0) | 2025.03.18 |
[코테연습] 2차원 배열 (0) | 2025.03.16 |
[코테 연습] 개행문자, 나머지연산 (0) | 2025.03.14 |