본문 바로가기

알고리즘 문제풀이

[알고리즘] 백준 10250번 "ACM 호텔" 문제 풀이 (C/C++) - Don 임베디드

직사각형으로 생긴 ACM 호텔이 있다.

각 층에 W 개의 방이 있는 H 층 건물이다. (1 <= H, W <= 99)

엘리베이터는 가장 왼쪽에 있으며, 정문은 1층 엘리베이터 바로 앞에 있다.

모든 인접한 두 방 사이의 거리는 1로 같다.

 

방 번호는 YXX 또는 YYXX 형태인데, Y나 YY는 층 수를 나타내고

XX는 왼쪽에서부터 세었을 때의 번호이다.

모든 손님은 정문으로부터 가장 걷는 거리가 짧은 방을 선호한다.

엘리베이터를 타는 거리는 걷는 거리로 치지 않는다.

 

TC 개수 T가 가장 첫 줄에 입력되고,

각 TC 데이터는 한 행에 H W N 순서로 입력된다.

 

 

제약:

제한시간 1초, 메모리 256MB, 

( 1 <= H, W <= 99,  1 <= N <= H*W )

 

예제 1 입력. 예제 1 출력.
2
6 12 10
30 50 72
402
1203

정답:

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
27
28
29
30
31
32
#include <iostream>
 
using namespace std;
 
int main()
{
    int T, H, W, N;
    int nTmpFloor, nTmpUnit;
    int nRetValue;
 
    // TC 개수 입력.
    cin >> T;
 
    while (T-- > 0)
    {
        // H, W, N 순서로 입력 받음.
        cin >> H >> W >> N;
 
        // 층 수 계산 후 decimal 두 자리 shift
        nTmpFloor = ((N % H) == 0) ? H : (N % H);
        nTmpFloor *= 100;
        // 호수 계산
        nTmpUnit = ((N % H) == 0) ? (N / H) : ((N / H) + 1);
 
        // 최종 호수 계산.
        nRetValue = nTmpUnit + nTmpFloor;
 
        cout << nRetValue << endl;
    }
 
    return 0;
}
cs

 

문제 원본 링크:

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