프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
1. 상자가 아래 그림과 같이 쌓여있음
- w: 가로 상자 개수, n : 전체 상자 개수
2. num번째 상자를 꺼내려면 몇개의 상자를 꺼내야 하는가?
1. 꺼내야하는 상자의 개수 = num번째 상자가 있는 열의 높이 - num번째 상자의 높이 + 1
👉 num번째 상자가 있는 열의 높이, num번째 상자의 높이를 구한다
2. num번째 상자가 있는 열의 높이 구하기
3. num번째 상자의 높이를 구하기
👉 num을 w로 나눈 후 올림
import math
def solution(n, w, num):
# num번째 상자가 있는 열의 높이 구하기
totalHeight = getTotalHeight(n, w, num)
# num번째 상자의 높이 구하기
numHeight = math.ceil(num / w)
return totalHeight - numHeight + 1
def getTotalHeight(n, w, num):
result = n // w
remain = n % w
indexN = getIndex(n, w)
indexNum = getIndex(num, w)
# remain이 0이면 모든 열의 높이 동일
if n % w == 0:
return result
if result % 2 == 1:
if indexNum >= indexN:
result = result + 1
else:
if indexN >= indexNum and remain > 0:
result = result + 1
return result
def getIndex(n, w):
result = n // w
remain = n % w
if result % 2 == 1: # 홀수이면 오->왼
return w - remain + 1
else: # 짝수이면 왼 -> 오
return remain
[프로그래머스] 389479. 서버 증설 횟수 | Python3, Level2, 단순 구현 (0) | 2025.04.15 |
---|---|
[프로그래머스] 388351. 유연근무제 | Python3, Level1, 단순 구현 (0) | 2025.04.14 |
[프로그래머스] 301651. 멸종위기의 대장균 찾기 | MySQL, 재귀 쿼리 (0) | 2025.04.10 |
[백준] 2161. 카드1 | 큐 | 파이썬, 정답 소스코드 (2) | 2024.10.09 |
[백준] 10845. 큐 | 큐 | 파이썬, 정답 소스코드 (2) | 2024.10.09 |