※ 글쓴이는 취미로 코딩을 익혀보는 사람이라 정확하지 않은 내용을 담고 있을 수 있다 ※

 

이번에 볼 문제는 백준 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

+ Recent posts