채팅 기록 중 곰곰티콘이 사용된 횟수를 출력하시오.
다음 ENTER가 입력되기 전까지의 닉네임 기록에서의 서로 다른 닉네임의 개수를 저장하는 과정을 반복해 최종 답을 구한다.
ENTER가 입력될 때마다(새로운 사람이 들어올 때마다) ans에 기존의 s의 크기를 더한 후 s는 초기화한다.
닉네임이 입력될 때는 s에 저장한다. set 컨테이너 특성 상 중복은 저장되지 않고, s에는 채팅을 한 번이라도 친 사람의 수가 저장된다. (채팅을 친 모든 사람은 곰곰티콘을 사용함)
(주의) for문 이후에 s.size()를 한 번 더 ans에 더해주어야한다.
#include <iostream>
#include <string>
#include <set>
using namespace std;
set<string> s;
int main() {
cin.tie(NULL); cout.tie(NULL);
ios_base::sync_with_stdio(false);
int n, i, ans = 0;
string str;
cin >> n;
for (i = 0; i < n; i++) {
cin >> str;
if (str == "ENTER") {
ans += s.size(); // 저장된 닉네임 개수 더하기
s.clear(); // 초기화하기
}
else {
s.insert(str); // 닉네임 저장
}
}
ans += s.size(); // 한 번 더 저장
cout << ans;
return 0;
}
처음에는 for 반복문을 사용해 중복 닉네임을 검사했더니 시간 초과가 났다. 그래서 중복을 허용하지 않는 set 컨테이너를 사용해서 풀었다.