https://school.programmers.co.kr/learn/courses/30/lessons/389478
프로그래머스
SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
배열을 사용하면 굉장히 쉽게 풀 수 있지만 이런 문제는 또 수학적으로 풀고 싶은 마음이 생기죠
// 1~n 번호의 택배 상자
// snake형식으로 쌓음 좌하단부터 시작
// 특정 숫자를 찾을 때 몇 열인지 확인
int solution(int n, int w, int num) {
int answer = 0;
int q = (num-1) / w + 1;
int r = (num-1) % w + 1;
int offset;
if (q % 2 == 0)
{
offset = w - r + 1;
}
else
{
offset = r;
}
int nq = (n - 1) / w + 1;
int nr = (n - 1) % w + 1;
int noffset;
if (nq % 2 == 0)
{
noffset = w - nr + 1;
if (offset >= noffset)
{
answer = nq - q + 1;
}
else
{
answer = nq - q;
}
}
else
{
noffset = nr;
if (offset <= noffset)
{
answer = nq - q + 1;
}
else
{
answer = nq - q;
}
}
return answer;
}
전체 상자의 높이 offset과 꺼낼 상자 높이 offset를 계산해 이를 통해 답을 도출했습니다.
'Algorithm > PS' 카테고리의 다른 글
| [1일 1알고] 카드 짝 맞추기 (0) | 2026.05.05 |
|---|---|
| [1일 1알고] 주차 요금 계산 (0) | 2026.05.03 |
| [1일 1알고] [PCCP 기출문제] 4번 / 수식 복원하기 (0) | 2026.04.29 |
| [1일 1알고] 유연 근무제 (0) | 2026.04.24 |
| [1일 1알고] 완전 범죄 (0) | 2026.04.22 |