새소식

반응형
알고리즘

[C++] 소프티어 Softeer 21년 재직자 대회 예선 - 회의실 예약

  • -
728x90
반응형

https://softeer.ai/practice/info.do?idx=1&eid=626 

 

Softeer

연습문제를 담을 Set을 선택해주세요. 취소 확인

softeer.ai

 

level 2 중 두번째로 정답률이 높은문제..!

근데 하다보니 정답률이 중요한게 아닌듯.. 애초에 제출수가 다른 문제에 비해 겁나 적다

다른 정답률 더 낮은문제가 훨~~씬 더 쉽고 단순..

 

움하핫

 

무튼 내코드.. 오늘도 엉망진창 ㅎ

 

저거 풀때 후다닥 약속 가야해서 진짜 주먹구구식으로 했다..

힝 ㅜ

 

솔직히 ~ .. 세배는 줄일수있을듯 ㅎ

 

아 cout 쓸때 포맷 맞춰서 출력하는거 이번에 첨알았다!!

 

cout.width(2); // 폭을 2로 지정
cout.fill('0'); // 채움 문자는 '0'

 

이거!

 

#include<iostream>
#include<algorithm>
#include<vector>

using namespace std;
int N, M, from, to;
string name[51];
bool navailable[19];
vector<int> navailList[50];
vector<int> lefttime[18];

// 회의실 갯수, 예약된 회의 갯수

int main(int argc, char** argv)
{
	cin >> N >> M;
	for (int i = 0; i < N; i++) { // 회의실 이름 주어짐
		cin >> name[i];
		;
	}
	sort(name, name + N);
	string thisname;
	for (int i = 0; i < M; i++) { // 회의 배정된 회의실, 시작시각, 종료시각
		cin >> thisname >> from >> to;
		for (int j = 0; j < N; j++) {
			if (thisname.compare(name[j]) == 0) {
				for (int k = from; k < to; k++) {
					navailList[j].push_back(k);
				}
			}
		}
	}
	for (int i = 0; i < N; i++) {
		sort(navailList[i].begin(), navailList[i].end());
	}

	for (int i = 0; i < N; i++) {
		int tot = 0;

		cout << "Room " << name[i] << ":" << endl;
		for (int j = 9; j < 18; j++) {
			navailable[j] = 0;
		}
		navailable[8] = true;
		navailable[18] = true;
		for (auto j = navailList[i].begin(); j != navailList[i].end(); j++) {
			navailable[*j] = true;
		}

		for (int j = 9; j < 18; j++) {
			if (!navailable[j]&& navailable[j] != navailable[j +1])
				tot++;
		}

		if (tot > 0) {
			cout << tot << " available:" << endl;
			bool now = false;
			for (int j = 9; j <= 18; j++) {
				cout.width(2); // 폭을 2로 지정
				cout.fill('0'); // 채움 문자는 '0'
				if (!navailable[j]&& navailable[j]!=navailable[j-1]) {
					cout << j << "-";
				}
				else if (navailable[j] && navailable[j-1]!=navailable[j]) {
					cout << j<< endl;
				}
			}
		}
		else {
			cout << "Not available" << endl;
		}

		if(i!=N-1)
			cout << "-----" << endl;
	}
	return 0;
}
반응형
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.