본문 바로가기

BOJ(백준 문제풀이)

백준 10250 ACM호텔 solution[python, 파이썬] - 풀이, 설명::FBTT

https://www.acmicpc.net/problem/10250

 

10250번: ACM 호텔

문제 ACM 호텔 매니저 지우는 손님이 도착하는 대로 빈 방을 배정하고 있다. 고객 설문조사에 따르면 손님들은 호텔 정문으로부터 걸어서 가장 짧은 거리에 있는 방을 선호한다고 한다. 여러분은 지우를 도와 줄 프로그램을 작성하고자 한다. 즉 설문조사 결과 대로 호텔 정문으로부터 걷는 거리가 가장 짧도록 방을 배정하는 프로그램을 작성하고자 한다. 문제를 단순화하기 위해서 호텔은 직사각형 모양이라고 가정하자. 각 층에 W 개의 방이 있는 H 층 건물이라고 가정

www.acmicpc.net

문제
입출력

1. 호텔 손님들의 방 배정 순서 찾기

 

elevator 401 402 403 404 405 406
301 302 303 304 305 306
201 202 203 204 205 206
101 102 103 104 105 106

위와 같은 방들이 있을 때, 손님들은 엘리베이터와 가까운 방을 선호합니다. 그러니까 102호보다는 201호를 선호합니다.

온 순서대로 손님들의 방을 배정할 때 101호, 201호, 301호, 401호 순서를 따른다. 그 다음 102호, 202호...

 

1
2
3
4
5
6
7
8
9
10
11
12
13
import sys
= int(sys.stdin.readline())
for i in range(T):
    H, W, N = map(int, sys.stdin.readline().split())
    n = 0
    for w in range(1, W + 1):
        for h in range(1, H + 1):
            n += 1
            if n == N:
                if w >= 10:
                    print(f'{str(h) + str(w)}')
                else:
                    print(f'{str(h)}0{str(w)}')
cs

 

sys.stdin.readline()는 input()과 같은 의미입니다.

 

반복문을 통해 몇 번째 손님인지 찾은 후 그 손님의 방 호수를 포맷팅을 이용해 출력합니다.

 

한 층의 방 개수가 9개 이하 일 때는 상관없지만 10개부터는 호수의 출력형식이 달라집니다.

109호와 110호는 중간에 0이 들어가고 안들어가고의 차이가 있기 때문에 마지막에 출력할 때 구분을 해주었습니다.