본문 바로가기

코드연습/BOJ

BOJ 10250 : ACM 호텔

728x90

그림 1. H = 6 이고 W = 12 인 H × W 호텔을 간략하게 나타낸 그림

 

위와 같이 생긴 호텔에서 방 번호는 YXX 나 YYXX 형태인데 여기서 Y 나 YY 는 층 수를 나타내고 XX 는 엘리베이터에서부터 세었을 때의 번호를 나타낸다. 즉, 그림 1 에서 빗금으로 표시한 방은 305 호가 된다.

여러분이 작성할 프로그램은 초기에 모든 방이 비어있다고 가정하에 이 정책에 따라 N 번째로 도착한 손님에게 배정될 방 번호를 계산하는 프로그램이다. 첫 번째 손님은 101 호, 두 번째 손님은 201 호 등과 같이 배정한다. 그림 1 의 경우를 예로 들면, H = 6이므로 10 번째 손님은 402 호에 배정해야 한다.

 

import sys

if __name__ == '__main__':
    num = int(sys.stdin.readline())
    for i in range(num):
        H, W, N = map(int, sys.stdin.readline().split())
        floor = N%H 
        xx = N // H + 1
        if N % H == 0:
            xx = N // H
            floor = H
        print(f'{floor}' + f'{xx}'.rjust(2,'0'))

층 수는 N을 H로 나눈 나머지이고, 대신 N과 H가 나누어 떨어지게 되면 층 수는 0이 되니깐, 나누기 전인 H를 가져와서 쓴다. 또한, 호수는 N을 H로 나눈 몫인데 이도 역시, 층 수가 나누어 떨어지면서 빠진 층 수의 값을 호 수에 더해주는 개념으로 붙였다.

 

 

 

'코드연습 > BOJ' 카테고리의 다른 글

BOJ 2839 : 설탕배달  (0) 2022.04.13
BOJ 2775 : 부녀회장이 될테야  (0) 2022.04.12
BOJ 2869 : 달팽이는 올라가고 싶다.  (0) 2022.04.11
BOJ 1193 : 분수찾기  (0) 2022.04.11
BOJ 2292 : 벌집  (0) 2022.04.08