구현(Implementation)

백준 10250번 : ACM 호텔

cepiloth 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


반응형