반응형
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
- sql사이트
- Flush
- intellij 플러그인 개발
- 쓰기지연저장소
- ls -lgaf
- 쿼리테스트사이트
- dto매핑우선순위
- 오라클쿼리테스트사이트
- Oracle
- 컬럼명중복
- 쓰기지연sql저장소 쿼리실행순서
- java 로 intellij 플러그인
- 스트림
- 포트앤어댑터 아키텍처
- Kafka
- IntelliJ
- 자바
- 설치없이쿼리실행
- 중복컬럼dto매핑
- error 2002 (hy000): can't connect to local mysql server through socket '/tmp/mysql.sock' (2)
- group by group by rollup 차이
- sql 테스트 사이트
- port&adapter architecture
- intellij 플러그인 만들기
- hibernate 쿼리실행 순서
- Stream
- 쿼리실행사이트
- 쿼리실행순서
- Java
- JPA
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 |