작성일 :

문제 링크

10250번 - ACM 호텔

설명

손님들이 도착한 순서에 따라 방을 배정했을 때, n 번째 손님에게 배정되어야 할 방의 번호를 계산하는 문제입니다.

방은 각 층별로 왼쪽부터 시작하여 오른쪽으로 배정되며, 층이 다 차면 그 다음 층으로 이동합니다.

따라서, n 번째 손님에게 배정될 방 번호는, n 을 높이 h 만큼 나누었을 때의 몫과 나머지로 구할 수 있습니다.


Code

[ C# ]

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
namespace Solution {
  class Program {
    static void Main(string[] args) {

      var cntCase = int.Parse(Console.ReadLine()!);

      for (int c = 0; c < cntCase; c++) {
        var input = Console.ReadLine()!.Split(' ');
        var h = int.Parse(input[0]);
        var w = int.Parse(input[1]);
        var n = int.Parse(input[2]);

        var floor = n % h;
        var numRoom = n / h + 1;

        if (n % h == 0) {
          floor = h;
          numRoom--;
        }

        Console.Write(floor);
        if (numRoom < 10)
          Console.Write("0");
        Console.WriteLine(numRoom);
      }

    }
  }
}



[ C++ ]

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
#include <bits/stdc++.h>

using namespace std;

int main() {
  ios::sync_with_stdio(false);
  cin.tie(nullptr);

  int cntCase; cin >> cntCase;
  for (int c = 0; c < cntCase; c++) {
    int h, w, n; cin >> h >> w >> n;

    int floor = n % h, numRoom = n / h + 1;

    if (n % h == 0) {
      floor = h;
      numRoom--;
    }

    cout << floor;
    if (numRoom < 10)
      cout << "0";
    cout << numRoom << "\n";
  }

  return 0;
}