문제의 조건을 보면 손님들은 걸어서 가장 짧은 거리에 있는 방을 선호한다. 즉, 1호에 해당하는 방들이 다 배정된 다음에 2호에 해당하는 방들이 배정되며, 방은 1층부터 꼭대기층 순서로 배정된다는 것을 알 수 있다.
그러므로 N번째 사람이 배정받는 방의 호수는 N을 H로 나눈 몫을 이용해서 구할 수 있다. 나누어 떨어지지않는 경우에는 N//H +1, 나누어 떨어지는 경우에는 N//H를 하면 된다.
또한 N번째 배정받는 방의 층수는 N을 H로 나눈 나머지를 이용해서 구할 수 있다. 나머지가 0인 경우에는 나누어 떨어지는 경우이므로, 최고층에 배정해주면 된다.
import sys
test_case = int(sys.stdin.readline())
for _ in range(test_case):
h,w,n = map(int, sys.stdin.readline().split())
floor = n%h
room_num = 0
if floor == 0:
floor += h
if n % h == 0:
room_num = n//h
else:
room_num = n//h + 1
print(floor*100 + room_num)
처음에 어떻게 풀지 고민을 하다가 숫자들을 순서대로 나열을 해보면서 규칙성을 파악했다.
직접 손으로 써보면서 규칙성을 파악하는 것이 필요하다는 것을 배웠다.