문제
리뷰
H층 W호의 방을 가진 호텔이 있다.
H=6, W=12 라면, 총 72개의 방이 있는데, 엘리베이터는 1호 쪽에만 있다.
1 ≤ H, W ≤ 99, 1 ≤ N ≤ H × W 라는 제한이니까 층과 호는 2자리수 까지만 입력이 들어올 수 있다.
따라서, 12호(2자리 수의 W) 까지 존재하는 호텔은 2호에 배정할 때 02호 라고 출력해야 한다.
예를 들어, H=3, W=5 라면, N번째 손님의 배정 순서는 아래와 같다.
N / W 으로 '호' 를 구할 수 있다. N % W == 0 인 경우, 나누어 떨어지니까 1 크게 나온다.
*301 (N=3) * N / 3 == 1 | *302 (N=6) * N / 3 == 2 | |
*201 (N=2) * N / 3 == 0 | 202 (N=5) N / 3 == 1 | |
*101 (N=1) * N / 3 == 0 | *102 (N=4) * N / 3 == 1 |
N % W 으로 '층' 을 구할 수 있다.
단, N % W == 0 이라면, 층을 H로 대체해 줘야 한다.
*301 (N=3) * N % 3 == 0 --> 3층! | *302 (N=6) * N / 3 == 0 --> 3층! | |
*201 (N=2) * N / 3 == 2 | 202 (N=5) N / 3 == 2 | |
*101 (N=1) * N / 3 == 1 | *102 (N=4) * N / 3 == 1 |
맞은 코드
#include <iostream>
#include <algorithm>
using namespace std;
int TC, H, W, N;
int main(void){
cin >> TC;
while(TC--){
cin >> H >> W >> N;
int level = N % H; // 층
int ho = N / H + 1; // 호
if(level == 0){
level = H;
}
if(N % H == 0){
ho--;
}
cout << level*100 + ho << '\n';
}
return 0;
}
728x90
'알고리즘 > 백준' 카테고리의 다른 글
요세푸스 문제 0 백준 11866 (0) | 2020.10.02 |
---|---|
카드2 백준 2164번 (0) | 2020.09.30 |
이항계수1 백준 11050번 c++ (0) | 2020.09.28 |
단어정렬 백준 1181번 (0) | 2020.09.28 |
듣보잡 백준 1764번 c++ (0) | 2020.09.22 |