문제
https://school.programmers.co.kr/learn/courses/30/lessons/389478
해답
class Solution {
public int solution(int n, int w, int num) {
boolean left = true;
int maxC = n/w+(n%w==0?0:1);
int c = 0;
int r = 0;
int numc = 0;
int numr = 0;
int[][] boxes = new int[maxC][w];
for(int i=1;i<=n;i++){
if(i==num){
numc=c;
numr=r;
}
if(left){ //오른쪽
boxes[r][c]=i;
if(c==w-1){
r++;
left = false;
}else{
c++;
}
}else{ //왼쪽
boxes[r][c]=i;
if(c==0){
r++;
left = true;
}else{
c--;
}
}
}
int answer = 0;
while(numr<maxC){
if(boxes[numr][numc]!=0)
answer++;
numr++;
}
return answer;
}
}
해설
문제를 수학적인 규칙으로 풀어보려했으나, 의도가 직접 배열안에 순차적으로 숫자를 담고
그 숫자가 제대로 들어가서 올바르게 처리할수 있는것인지를 묻는 문제로 보여 직접 배열에 숫자들을 담고
그 숫자들을 이용해서 답을 구했다.
'Coding Test > JAVA 코딩테스트 풀이정리(프로그래머스)' 카테고리의 다른 글
프로그래머스 스쿨(Java - Lv.2) - 완전범죄[DP - 메모아이징] (0) | 2025.03.03 |
---|---|
프로그래머스 스쿨(Java - Lv.2) - 연속 부분 수열 합[윈도우 슬라이드] (0) | 2025.02.24 |
프로그래머스 스쿨(Java - Lv.1) - 유연근무제[2025 프로그래머스 코드챌린지 1차 예선] [반복문처리] (1) | 2025.02.12 |
프로그래머스 스쿨(Java - Lv.2) - 피로도[경우의수를 따지는 완전탐색] (0) | 2025.01.28 |
프로그래머스 스쿨(Java - Lv.2) - 기능개발[스택/큐 ? 길이가 정해지지 않은 배열] (0) | 2025.01.28 |