#include <iostream>
#include <string>
#include <unordered_map>
using namespace std;
int main() {
string str;
int n;
cin >> n;
unordered_map<string, int> m(n);
int cnt = 0;
for (int i = 0; i < n; i++) {
cin >> str;
if (str == "ENTER") {
m.clear();
}
else {
m[str]++;
if (m[str] == 1) cnt++;
}
}
cout << cnt;
return 0;
}
자료구조 공부한 지 얼마나 됐다고 고새 홀라당 다 까먹어서
생각해내지 못한 풀이..
set은 중복을 허용하지 않으니
enter 이후 들어온 사람을 냅다 받아 크기를 더해주면 된다.
enter가 입력될 때마다 이전에 저장되어 있던 s의 크기와
입력이 끝난 뒤 저장되어 있던 s의 크기의 합까지 잊지말고 더해주자.
#include <iostream>
#include <set>
#include <string>
using namespace std;
int main() {
int n;
cin >> n;
set<string> s;
int cnt = 0;
for (int i = 0; i < n; i++) {
string str;
cin >> str;
if (str == "ENTER") {
cnt += s.size();
s.clear();
}
else {
s.insert(str);
}
}
cnt += s.size();
cout << cnt;
return 0;
}