회사에는 N개의 회의실이 있다. 수많은 팀이 모여 토론하고 업무를 처리하기 위해서는 회의실이 필수적이다.
내부망에 아주 간단한 회의실 예약 시스템이 있지만 편의성이 매우 떨어진다. 단순히 예약된 회의의 목록만 표시되기 때문에, 방 별로 비어 있는 시간이 언제인지를 확인하기가 힘든 것이다. 당신은 이를 직접 해결해 보기로 마음 먹었다.
회의실 이용 규칙은 다음과 같다:
이미 예약된 M개의 회의에 대한 정보가 주어지면, 회의실별로 비어 있는 시간대를 정리해 출력하는 프로그램을 작성해 보자. 구체적인 형식은 아래를 참고하시오.
1 ≤ N ≤ 50
1 ≤ M ≤ 100
회의실의 이름은 영문 알파벳 소문자로만 이루어져 있으며 길이는 1 이상 10 이하이다.
주어지는 모든 시각은 9 이상 18 이하이다.
회의의 시작 시각은 회의의 종료 시각을 1시간 이상 앞선다.
첫째 줄에 회의실의 수와 예약된 회의의 수를 나타내는 정수 N과 M이 공백을 사이에 두고 주어진다.
이어 N개의 줄에는 각 회의실의 이름이 주어진다.
이어 M개의 줄에는 각 회의가 배정된 회의실의 이름 r과 시작 시각 s, 그리고 종료 시각 t가 공백을 사이에 두고 주어진다.
각 회의실에 대한 정보를 회의실 이름의 오름차순으로 출력한다.
각 회의실에 대한 정보는 다음과 같다.
첫째 줄에는 { Room 회의실이름: } (중괄호 제외)을 출력한다.
둘째 줄에는 예약가능 시간을 출력한다.
- 입력
3 7
grandeur
avante
sonata
sonata 14 16
grandeur 11 12
avante 15 18
sonata 10 11
avante 9 12
grandeur 16 18
avante 12 15- 출력
Room avante:
Not available
Room grandeur:
2 available:
09-11
12-16
Room sonata:
3 available:
09-10
11-14
16-18
#include <iostream>
#include <string>
#include <map>
#include <vector>
using namespace std;
int n, m;
map<string, int> room;
int schedule[51][19];
vector<string> answer[51];
int main() {
cin >> n >> m;
for (int i = 0; i < n; i++) {
string car;
cin >> car;
room[car] = i;
}
for (int i = 0; i < m; i++) {
string name;
int st, ed;
cin >> name >> st >> ed;
for(int j = st; j < ed; j++) {
schedule[room[name]][j] = 1;
}
}
for (int i = 0; i < n; i++) {
for (int j = 9; j <= 18;) {
if(schedule[i][j] == 0 && j != 18) {
string time;
if (j == 9) time += "09";
else time += to_string(j);
time += "-";
while (schedule[i][j] == 0 && j < 18) j++;
time += to_string(j);
answer[i].push_back(time);
}
else j++;
}
}
for (auto r : room) {
cout << "Room " << r.first << ":\n";
if(answer[r.second].empty()) cout << "Not available\n";
else {
cout << answer[r.second].size() << " available:\n";
for(auto a : answer[r.second]) {
cout << a << '\n';
}
}
if (r.first != room.rbegin()->first) cout << "-----\n";
}
return 0;
}
- 입력 받을 때 string, int 등 한번에 바로 받을 수 있다.
- to_string(): string으로 타입 변환하는 함수 (string 라이브러리 내장)
- map : python 딕셔너리와 비슷하게 key와 value를 묶어 저장하는 컨테이너