[백준 27481] Hotelier (C#, C++) - soo:bak
작성일 :
문제 링크
설명
호텔 객실의 배정 상황을 추적하는 문제입니다.
호텔에는 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;
}