문제
ACM 호텔 매니저 지우는 손님이 도착하는 대로 빈 방을 배정하고 있다. 고객 설문조사에 따르면 손님들은 호텔 정문으로부터 걸어서 가장 짧은 거리에 있는 방을 선호한다고 한다. 여러분은 지우를 도와 줄 프로그램을 작성하고자 한다. 즉 설문조사 결과 대로 호텔 정문으로부터 걷는 거리가 가장 짧도록 방을 배정하는 프로그램을 작성하고자 한다.
문제를 단순화하기 위해서 호텔은 직사각형 모양이라고 가정하자. 각 층에 W 개의 방이 있는 H 층 건물이라고 가정하자 (1 ≤ H, W ≤ 99). 그리고 엘리베이터는 가장 왼쪽에 있다고 가정하자(그림 1 참고). 이런 형태의 호텔을 H × W 형태 호텔이라고 부른다. 호텔 정문은 일층 엘리베이터 바로 앞에 있는데, 정문에서 엘리베이터까지의 거리는 무시한다. 또 모든 인접한 두 방 사이의 거리는 같은 거리(거리 1)라고 가정하고 호텔의 정면 쪽에만 방이 있다고 가정한다.
아이디어
호텔의 층수 = h. 호텔의 방 칸 수 = w. n번째 손님의 위치 찾기.
호텔의 칸은 아래부터 위로 채워짐. 한 column이 가득 채워지면, 다음으로.
n % h = 가로번호 a 설정. n // h = 세로번호 b 설정
만약 a == 0이면 (즉, 맨 위 번호인 경우)
- a는 h로 설정.
- 그렇지 않으면 a = n % h
만약 n % h == 0이면 (즉, 맨 위 번호인 경우)
- b는 n // h
- b는 (n // h) + 1
그리고, b에다가 0 붙이기
코드
python
"""ACM 호텔"""
import sys
input = sys.stdin.readline
for _ in range(int(input())):
h, w, n = map(int, input().split())
# a 설정하기
a = n % h
if a == 0:
a = h
# b 설정하기
if n % h == 0:
b = n // h
else:
b = (n // h) + 1
# XX에 0 붙이기
if b // 10 == 0:
b = str(0) + str(b)
print("%d%s" % (a, b))