https://www.acmicpc.net/problem/10250
def solution():
t = int(input())
for i in range(t):
h, w, n = map(int, input().split())
floor = n % h
num = n // h + 1
if n % h == 0: #
num = n // h
floor = h
print(f'{floor * 100 + num}')
문제는 층수를 먼저 채우고, 다름 호수로 넘어가는 식이다.
예를들면 3층에 3호실까지 있는 호텔이라고 가정하면 손님들이 방을 사용하게 되는 순서는
101 201 301 102 202 302 103 203 303 순서이다.
풀이방법을 정리해보자
1. 테이스 케이스로 입력받는 수만큼 for문을 반복한다. 이후에 for문 안에서 호텔의 층수, 호수, 손님 방문 순서를 각각 h, w, n 변수에 선언하고서 객실의 층은 floor, 각층의 방 번호는 num으로 변수를 지정해서 코드를 작성한다.
2. 방 번호인 num변수는 입력받은 n과 h를 나눈 몫에 1을 더한수이고, 층수인 floor변수는 n과 h를 나눈 나머지가 된다. 이 규칙을 코드로 작성하였다.
3. 입력받는 n이 호텔 층수를 나타내는 h의 배수인 경우는 다른 코드를 작성한다.
if n % h == 0: # h의 배수이면,
num = n//h
floor = h
print(f'{floor*100+num}')
코드를 위에 for문만 작성하면 입력받는 n이 호텔 층수인 h의 배수인 경우에는 잘못된 값을 출력하게 된다. 그래서 for문 안에서 if조건식을 사용해서 n이 h의 배수인 때, 즉 n에 h를 나눈 나머지가 0인 때의 조건식을 별도로 작성하였다.
이때에는 방 번호인 num은 n에서 h를 나눈 몫을 그대로 출력해야 하고 floor는 입력받은 h를 그대로 출력한다.
이후에 print 함수로 출력문을 작성할 때에는 위에서 작성한 for문이 층과 호를 각각 구했기 때문에 floor 변수에는 100을 곱하고서 그 수에 num변수를 더한 값을 출력하였다.