C, C++/백준

10250번 ACM 호텔 문제를 풀어보았다.

Shinya Matsuri 2019. 5. 11. 11:02

10250 ACM 호텔

 

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

 

10250번: ACM 호텔

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

www.acmicpc.net

ACM 호텔의 방을 예약하는 손님들은 전부 조금이라도 덜 걷고 싶어한다.

그리고 엘레베이터를 타고 이동하는 거리는 신경쓰지 않는다.

하지만 같은 거리를 걷는다면 낮은 층을 선호한다.

그래서 방을 예약하는 우선도는 101, 201, 301, 401, 501, 102, 202... 과 같은 순서로 이루어져있다.

n번째로 예약하는 손님이 예약하는 방 번호를 출력하는 문제이다.

입력 조건에서부터 n은 h*w보다는 같거나 작게 입력되기 때문에 단순하게 생각하여 풀어보았다.

층 수는 단순하게 n을 h로 나눈 나머지가 될 것 같았다.

호실수는 n을 h로 나눈 값이 될 것 같았다.

그래서 구현하고 난 뒤 틀렸다.

뭐가 잘못됐는지 보아하니, n과 h가 같거나, n이 h로 나누어 떨어질때, 0층으로 출력되거나, 단순히 호실이 옆방으로 출력되는 상황이 생겼다.

그래서 나는 예외 케이스를 나눠주어 풀었다.

 

#include <stdio.h>
int main()
{
    int h,w,n,t;
    scanf("%d", &t);
    for(; t; t--) {
        scanf("%d %d %d", &h, &w, &n);
        printf("%d%02d\n",n%h==0?h:n%h,n%h==0?n/h:n/h+1);
    }
}