※ 글쓴이는 취미로 코딩을 익혀보는 사람이라 정확하지 않은 내용을 담고 있을 수 있다 ※
이번에 볼 문제는 백준 19583번 문제인 싸이버개강총회이다.
문제는 아래 링크를 확인하자.
https://www.acmicpc.net/problem/19583
"개강총회 시작시각 이하의 시각에 채팅을 친 사람의 집합"과 "개강총회가 끝나는 시각 이상 스트리밍이 끝나는 시각 이하의 시각에 채팅을 친 사람의 집합"의 교집합을 구하는 문제이다.
이를 가장 쉽게 구하는 방법 중 하나는 각각의 집합을 set을 이용해 구하고, 한 set에 들어있는 이름이 다른 set에도 들어있는지 하나하나 확인하는 것이다.
주어지는 각 시간은 문자열 상태로 그대로 두고 크기를 비교해도 실제 시각과 같은 비교 결과를 보이므로 특별한 가공 없이 그대로 사용해도 좋다.
같은 사람을 여러번 세는 경우가 없게끔 주의해 구현하자.
아래는 제출한 소스코드이다.
#include <iostream>
#include <string>
#include <set>
using namespace std;
string A, B, C, X, Y;
set<string> st, st2;
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
cin >> A >> B >> C;
while (cin >> X >> Y) {
if (X <= A) st.insert(Y);
else if (B <= X && X <= C) {
if (st.count(Y)) st2.insert(Y);
}
}
cout << st2.size();
}
728x90
'BOJ' 카테고리의 다른 글
[BOJ 12843 // C++] 복수전공 (0) | 2024.05.02 |
---|---|
[BOJ 24292 // C++] РАЗДЕЛЯЙ и ВЛАДЕЙ (1) | 2024.05.01 |
[BOJ 18004 // C++] From A to B (0) | 2024.04.29 |
[BOJ 4614 // C++] Linear Pachinko (1) | 2024.04.28 |
[BOJ 28858 // C++] Пасьянс (0) | 2024.04.27 |