ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 백준 10250번 : ACM 호텔
    구현(Implementation) 2018. 6. 20. 11:56
    반응형

    https://www.acmicpc.net/problem/10250


    1. 문제


     방 번호는 YXX 나 YYXX 형태인데 여기서 Y 나 YY 는 층 수를 나타내고 XX 는 엘리베이터에서부터 세었을 때의 번호를 나타낸다. 

    즉, 그림 1 에서 빗금으로 표시한 방은 305 호가 된다. 손님은 엘리베이터를 타고 이동하는 거리는 신경 쓰지 않는다. 


    다만 걷는 거리가 같을 때에는 아래층의 방을 더 선호한다. 


    예를 들면 102 호 방보다는 301 호 방을 더 선호하는데, 102 호는 거리 2 만큼 걸어야 하지만 301 호는 거리 1 만큼만 걸으면 되기 때문이다. 같은 이유로 102 호보다 2101 호를 더 선호한다. 여러분이 작성할 프로그램은 초기에 모든 방이 비어있다고 가정하에 이 정책에 따라 N 번째로 도착한 손님에게 배정될 방 번호를 계산하는 프로그램이다. 


    첫 번째 손님은 101 호, 두 번째 손님은 201 호 등과 같이 배정한다. 그림 1 의 경우를 예로 들면, H = 6이므로 10 번째 손님은 402 호에 배정해야 한다.


    2. 알고리즘

    세번 째 입력 N 은 N 번 째 손님을 의미 한다.


    1 번째 손님 - 101

    2 번째 손님 - 201

    3 번째 손님 - 301

    4 번째 손님 - 401

    5 번째 손님 - 501

    6 번째 손님 - 601

    ---------------------  H 가 6 임으로 다음 칸으로 넘어간다.

    7 번째 손님 - 102

    8 번째 손님 - 202

    9 번째 손님 - 302

    10 번째 손님 - 403


    호수 계산 - 10-1(도착한 손님) % 호텔의 높이(H) + 1

    층수 계산 - 10-1(도착한 손님) / 호텔의 높이(H) + 1


    3. 코드

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    #include <iostream>
    #include <sstream>
    #include <string>
    #include <algorithm>
    #include <functional>
    #include <vector>
    #include <list>
    #include <queue>
    #include <map>
    #include <set>
    #include <stack>
    using namespace std;
     
    int main() {
        std::ios::sync_with_stdio(false); cin.tie(0);
     
        int n; cin >> n;
        
        while(n--) {
            int a, b, c;
     
            cin >> a >> b >> c; c--;
            printf("%d%02d\n", c%a+1, c/a+1);
        }
        return 0;
    }
    cs


    반응형

    댓글

Designed by Tistory.