#60. 백준 10250번 문제 풀이: ACM 호텔 | 문제 원본 보기 |
--입력-- 2 6 12 10 30 50 72 --출력-- 402 1203
호수는 [층수][호수]의 조합이다. 선호도는 앞쪽호수 우선, 층수쪽으로 우선이다. N 번째 손님이라면, /(나누기 몫), 호수는 1부터 시작하므로 +1 해줌. 선호 호수 = (N / 층수) + 1 가 되고, %(나누기 나머지) 선호 층수 = N % 층수 가 된다. 여기서 한가지 고려해야 할 것은 손님 순서가 층수의 배수이면 나머지가 0 이 된다. 0이 의미하는 건 0층이 아니라 꼭대기 층일 경우이다. 그래서 나머지가 0일 경우 별도 처리해 주어야 한다. 호수 = N / H 층수 = H (꼭대기층) 이 된다.
호수가 9이하일 경우 09 식으로 0을 붙여줘야 한다. C++에서 여러가지 방법이 있지만 cout 으로 처리하는 방법을 사용했다. cout.width(2); cout.fill('0'); 처럼 해 주면 2자리수에 빈자리가 있으면 0으로 채워둔다.
#include <iostream>
using namespace std;
int main() {
int i, T, H, W, N, n, f;
cin >> T; // 테스트 케이스 개수를 정수로 받는다.
for(i = 0; i < T; i++) { // 테스트 케이스 만큼 반복
cin >> H >> W >> N;
// 호텔 층수, 각층의 방수, 몇 번째 손님인지를 받는다.
if(N % H == 0) { // 꼭대기 층은 나누면 0층이 되므로 꼭대기 층으로 처리해 준다.
n = N / H; // 선호 호수
f = H; // 층은 꼭대기층
} else {
n = (N / H) + 1; // 선호 호수, 호수는 1부터이므로 +1 해줌.
f = N % H; // 선호 층수
}
cout << f;
cout.width(2); cout.fill('0');
cout << n << endl; // 층호수, 즉 방번호 형식으로 출력
}
return 0;
}