[C++] BOJ 19583번: 싸이버개강총회

ㅎㅎ·2023년 8월 4일
0

BOJ

목록 보기
29/65

BOJ 19583번: 싸이버개강총회

문제


문제 풀이

참고한 사이트 : https://winterflower.tistory.com/218

stoi로 문자열 시간을 int로 변환

개강총회 전이면 first에 저장
개강총회 이후 스트리밍 끝나기(포함)까지 채팅 기록 확인

#include <iostream>
#include <string>
#include <set>
#include <algorithm>
using namespace std;

int main() {
	ios_base::sync_with_stdio(0);
	cin.tie(0); cout.tie(0);

	string s, e, q, time, name;
	int st, et, qt, t, cnt = 0;

	cin >> s >> e >> q; // 시작, 끝, 스트리밍
	set<string> first; // 중복 자동 제외

	st = 60 * stoi(s.substr(0, 2)) + stoi(s.substr(3, 2));
	et = 60 * stoi(e.substr(0, 2)) + stoi(e.substr(3, 2));
	qt = 60 * stoi(q.substr(0, 2)) + stoi(q.substr(3, 2));

	while (cin >> time >> name) {
		t = 60 * stoi(time.substr(0, 2)) + stoi(time.substr(3, 2));

		if (t <= st) { first.insert(name); } // 개강총회 전, 저장
		if (t >= et && t <= qt) { // 개강총회 끝이자 스트리밍 끝
			if (first.find(name) != first.end()) { // 입장했으면
				cnt++;
				first.erase(name); // 카운트 후 삭제
			}
		}
	}

	cout << cnt << '\n';

	return 0;
}
profile
Backend

0개의 댓글