문제

ACM 호텔 백준 10250번

리뷰

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

+ Recent posts