개발자 톡
연습문제 톡
[21년 재직자 대회 예선] 회의실 예약
회의실 예약 반례부탁해요 ..
- 등록일
- 2023-05-25 21:21:33
- 조회수
- 391
- 작성자
- kim5458996
#include
#include
#include
#include
#include
using namespace std;
vector room;
vector > meeting;
int main(void)
{
int name, time;
cin >> name >> time;
for (int i = 0; i < name; i++) { // 회의실의 수
string tmp;
cin >> tmp;
room.push_back(tmp);
}
sort(room.begin(), room.end());
for (int i = 0; i < time; i++) { // 예약된 회의
int a, b;
string tmp;
cin >> tmp >> a >> b;
meeting.push_back(make_tuple(tmp, a, b));
}
sort(meeting.begin(), meeting.end());
int cnt = 0;
for (int i = 0; i < name; i++) {
cout << "Room " << room[i] << ":" << endl;
vector availble;
int start = 9;
int end = 18;
int start_time = 0, end_time = 0;
string str = "";
for (int j = cnt; j < time; j++) {
str = "";
if (get<0>(meeting[j]) == room[i]) {
cnt++;
start_time =get<1>(meeting[j]);
end_time = get<2>(meeting[j]);
if (end_time == end) { // 마무리
break;
}
else if (start_time != start) {
str = "";
if (to_string(start) == "9") {
str += "09";
}
else {
str += to_string(start);
}
str += "-";
str += to_string(start_time);
availble.push_back(str);
}
start = end_time;
}
else {
break;
}
}
if (end != end_time) { //끝나는 시간이 18시가 안됐을때.
string tmp = "";
if (to_string(start) == "9") {
tmp += "09-18";
}
else {
tmp += to_string(end_time);
tmp += "-";
tmp += to_string(end);
}
availble.push_back(tmp);
}
else if (start_time != start) { // 시작시간이 9시가 처음이 아닐때
string tmp = "";
tmp += to_string(start);
tmp += "-";
tmp += to_string(start_time);
availble.push_back(tmp);
}
if (availble.size() == 0) {
cout << "Not available" << endl;
}
else {
cout << availble.size() << " available:" << endl;
for (int i = 0; i < availble.size(); i++) {
cout << availble[i] << endl;
}
}
if (i != (name-1)) {
cout << "-----" << endl;
}
}
}
#[21년_재직자_대회_예선]_회의실_예약
#회의실