꾸준히 합시다

백준 파이썬 10250번: ACM 호텔 본문

코딩 테스트 문제 풀이

백준 파이썬 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)
  1. 먼저 테스트 케이스의 개수 t를 정수형으로 입력받는다.
  2. 각각의 테스트 케이스마다 호텔의 층 수(h), 각 층의 방 수(w), 몇 번째 손님(n)인지를 map()을 이용해 정수형으로 입력받는다.
  3. n을 h로 나눴을 때 나머지를 구하고, 그 나머지에 100을 곱한 수를 층수(floor)로 정한다. 예를 들어 4층 1호라면 401호가 되기 때문에 100을 곱해야 하는 것. 1000이 아니라 100만 곱해도 되는 이유는 호실이 99호까지 밖에 없기 때문이다.
  4. n을 h로 나눴을 때의 몫에 + 1 한 값을 호(room)로 한다. (호가 1호부터 시작하기 때문에 1을 더해준다.)
  5. 이렇게 했을 때 주의할 점은 n을 h로 나누었을 때 나머지가 없는 경우이다.
  6. 그래서 if문을 작성하여 예외 처리해줘야 한다. 나머지가 0이면 이 나머지에 100을 곱해도 0이 되기 때문에 그냥 h에 100을 곱해준 수를 층수로 정한다. 예를 들어 6층짜리 호텔의 6번째 손님이라면 601호에, 12번째 손님이라면 602호에 묵게 되는 것이다.

 

Comments