728x90
반응형
안녕하세요. 지난 포스팅의 BOJ 2869번 : 달팽이는 올라가고 싶다에서는 파이썬 내장 라이브러리 중 하나인 math 라이브러리의 ceil 함수를 이용해서 부등식 문제를 풀어보았습니다. 오늘은 약간 복잡한 문제를 풀어보도록 하죠.
완벽한 코딩은 존재하지 않습니다. 제가 제출한 코드 역시 마찬가지고 그저 참고만 해주시길 바랍니다.
핵심 포인트
- 기본 구현능력
제출 코드
for _ in range(int(input())) :
H, W, N = map(int, input().split())
i = 0
while True :
if N > i * H and N <= (i + 1) * H :
break
i += 1
print(str(N-i*H)+'0'+str(i+1) if i+1 < 10 else str(N-i*H)+str(i+1))
해설
문제는 전체 $H$층에 $W$호를 가지고 있는 호텔에 $N$번째 손님이 배정되는 방의 호수를 출력하는 것입니다. 기본적으로 손님에 대한 방 배정 규칙을 이해하셨다면 아래와 같이 진행하는 것을 아실 수 있습니다.
$$101 \rightarrow 201 \rightarrow 301 \rightarrow \cdots \rightarrow H01 \rightarrow 102 \rightarrow \cdots $$
일단, 저는 여기서 $N$번째 손님이 위치하는 방의 호수($W$)부터 구하기 위해 while 문을 사용하였습니다. 손님 방의 호수가 배정되기 위해서는 그 전 호수에 해당하는 모든 손님들이 방을 이미 배정받아야 합니다. 따라서, $i \times H < N \le (i + 1) \times H$를 만족하는 최대의 $i$가 손님이 투숙하는 호텔의 호수가 됩니다.
층수는 간단하게 구할 수 있습니다. 전체 층이 $H$ 층이고 $i$ 호수에 손님이 투숙한다는 것을 알게 되었으므로 전체 손님 $N$명에서 $i \times H$를 빼면 층수를 구할 수 있죠.
참고자료 및 그림출처
728x90
반응형
'Programming > Coding Problem' 카테고리의 다른 글
BOJ 2839번 : 설탕 배달 (0) | 2022.07.12 |
---|---|
BOJ 2775번 : 부녀회장이 될테야 (0) | 2022.07.11 |
BOJ 2869번 : 달팽이는 올라가고 싶다 (0) | 2022.07.09 |
BOJ 1193번 : 분수찾기 (0) | 2022.07.08 |
BOJ 2292번 : 벌집 (0) | 2022.07.06 |