작성일 :

문제 링크

27481번 - Hotelier

설명

호텔 객실의 배정 상황을 추적하는 문제입니다.

호텔에는 0 부터 9 까지의 방이 있으며, 손님들이 왼쪽 또는 오른쪽 출입구를 통해 도착하면, 가장 가까운 빈 방에 배정됩니다.

이 때, 각 손님이 언제 어떤 방을 떠났는지에 대한 정보를 통해 최종적인 방 배정 상태를 복원해야 합니다.

따라서, 총 10 개의 객실에 대한 현재 상태를 추적하고, 왼쪽(L) 또는 오른쪽(R) 출입구에서 도착하는 손님에 대해 가장 가까운 빈 방을 찾아 배정한 뒤,

손님이 특정 방에서 퇴실 할 때, 해당 방을 빈 상태로 변경합니다.

이후, 각 방의 상태를 정리하여 출력합니다.


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
30
31
32
33
34
35
36
37
namespace Solution {
  class Program {
    static void Main(string[] args) {

      int n = int.Parse(Console.ReadLine()!);
      string events = Console.ReadLine()!;

      bool[] rooms = new bool[10];

      foreach (char eventChar in events) {
        if (eventChar == 'L') {
          for (int i = 0; i < 10; i++) {
            if (!rooms[i]) {
              rooms[i] = true;
              break ;
            }
          }
        } else if (eventChar == 'R') {
          for (int i = 9; i >= 0; i--) {
            if (!rooms[i]) {
              rooms[i] = true;
              break ;
            }
          }
        } else {
          int roomNum = eventChar - '0';
          rooms[roomNum] = false;
        }
      }

      foreach (bool occupied in rooms)
        Console.Write(occupied ? 1 : 0);
      Console.WriteLine();

    }
  }
}



[ 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
30
31
32
33
34
35
36
37
38
39
40
#include <bits/stdc++.h>

using namespace std;

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

  int n; cin >> n;
  string events; cin >> events;

  vector<bool> rooms(10, false);

  for (char event : events) {
    if (event == 'L') {
      for (int i = 0; i < 10; i++) {
        if (!rooms[i]) {
          rooms[i] = true;
          break ;
        }
      }
    } else if (event == 'R') {
      for (int i = 9; i >= 0; i--) {
        if (!rooms[i]) {
          rooms[i] = true;
          break ;
        }
      }
    } else {
      int roomNum = event - '0';
      rooms[roomNum] = false;
    }
  }

  for (bool occupied : rooms)
    cout << occupied;
  cout << "\n";

  return 0;
}