본문 바로가기
코딩테스트/programming_C++

baekjoon #10250_ACM 호텔_c++

by prometedor 2021. 10. 28.
#include <iostream>
using namespace std;

int main() {
    int T;
    cin >> T;
    int H, W, N;
    for (int i = 0; i < T; i++) {
        cin >> H >> W >> N;
        int HH, WW;
        HH = N % H;
        WW = N / H;
        if (HH > 0)
            WW += 1;
        else
            HH = H;
        cout << HH * 100 + WW << '\n';
    }
}

T  =>  테스트 케이스 개수

H  =>  층 수

W  =>  각 층의 방 수

N  =>  몇 번째 손님인지 나타냄

HH  =>  N % H -> N번째 손님이 사용할 층

WW  =>  N / H -> N번째 손님이 사용할 방 번호

 

ex)

1

4 5 10 

 

T = 1

H = 4, W = 5, N = 10

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

HH = N % H = 10 % 4 = 2

WW = N / H = 10 / 4 = 2

 

HH > 0  ->  2 > 0  ->  true  =>  WW += 1  ->  WW = 2 + 1 = 3

 

HH * 100 + WW = 2 * 100 + 3 = 203

 

100 곱해주는 이유 -> 호수 출력을 YXX 나 YYXX 형태로 출력해야하기 때문

- 층이 Y, 방 번호가 XX라면 Y * 100 + XX = YXX

- 층이 YY, 방 번호가 XX라면 YY * 100 + XX = YYXX

 

ex)

1

4 5 20

 

T = 1

H = 4, W = 5, N = 20

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

HH = N % H = 20 % 4 = 0

WW = N / H = 20 / 4 = 5

 

HH > 0  ->  0 > 0  ->  false  =>  else 문 실행  ->  HH = H  ->  HH = 4

 

HH * 100 + WW = 4 * 100 + 5 = 405