코딩 테스트 문제 풀이
백준 파이썬 10250번: ACM 호텔
tturbo0824
2021. 3. 16. 20:50
https://www.acmicpc.net/problem/10250
10250번: ACM 호텔
프로그램은 표준 입력에서 입력 데이터를 받는다. 프로그램의 입력은 T 개의 테스트 데이터로 이루어져 있는데 T 는 입력의 맨 첫 줄에 주어진다. 각 테스트 데이터는 한 행으로서 H, W, N, 세 정수
www.acmicpc.net
문제 유형: 수학, 구현, 사칙연산
# Solution 1
t = int(input())
for i in range(t):
h, w, n = map(int, input().split())
if n % h == 0:
floor = h * 100
room = n // h
else:
floor = (n % h) * 100
room = 1 + n // h
print(floor + room)
- 먼저 테스트 케이스의 개수 t를 정수형으로 입력받는다.
- 각각의 테스트 케이스마다 호텔의 층 수(h), 각 층의 방 수(w), 몇 번째 손님(n)인지를 map()을 이용해 정수형으로 입력받는다.
- n을 h로 나눴을 때 나머지를 구하고, 그 나머지에 100을 곱한 수를 층수(floor)로 정한다. 예를 들어 4층 1호라면 401호가 되기 때문에 100을 곱해야 하는 것. 1000이 아니라 100만 곱해도 되는 이유는 호실이 99호까지 밖에 없기 때문이다.
- n을 h로 나눴을 때의 몫에 + 1 한 값을 호(room)로 한다. (호가 1호부터 시작하기 때문에 1을 더해준다.)
- 이렇게 했을 때 주의할 점은 n을 h로 나누었을 때 나머지가 없는 경우이다.
- 그래서 if문을 작성하여 예외 처리해줘야 한다. 나머지가 0이면 이 나머지에 100을 곱해도 0이 되기 때문에 그냥 h에 100을 곱해준 수를 층수로 정한다. 예를 들어 6층짜리 호텔의 6번째 손님이라면 601호에, 12번째 손님이라면 602호에 묵게 되는 것이다.