10250번 ACM 호텔 문제를 풀어보았다.
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);
}
}