본문 바로가기

백준/실버

[백준 19583번] 싸이버개강총회 (C++)

문제링크 : https://www.acmicpc.net/problem/19583

 

19583번: 싸이버개강총회

첫번째 줄에는 개강총회를 시작한 시간 S, 개강총회를 끝낸 시간 E, 개강총회 스트리밍을 끝낸 시간 Q가 주어진다. (00:00 ≤ S < E < Q ≤ 23:59) 각 시간은 HH:MM의 형식으로 주어진다. 두번째 줄부터는

www.acmicpc.net

#include <bits/stdc++.h>
using namespace std;
#define ll long long

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

    string S, E, Q;
    cin >> S >> E >> Q;
    set<string>start;
    set<string>end;

    while(1)
    {
        string time, name;
        cin >> time >> name;
        if(time=="" && name=="") break;
        if(time<=S)
        {
            start.insert(name);
            continue;
        }

        if(E<=time && time<=Q)
        {
            if(start.find(name) != start.end())  //해당 이름이 존재하면
            {
                end.insert(name);
            }
        }
    }

    cout << end.size() << "\n";
    return 0;
}

 

각 조건에 맞을 때 name을 넣어주고, 이 name이 다음 조건에 부합하는지 검토하고 최종 end에 넣어준다.

end의 크기가 곧 명수이므로 크기를 출력해준다.