티스토리 뷰
https://www.acmicpc.net/problem/7785
map을 사용하여 key에는 이름, value에는 회사에 존재 여부를 기록합니다.
enter -> map의 value로 1 저장
leave -> map의 value로 0 저장
map은 key 값을 기준으로 정렬을 할 수 있다. -> map<string, int, greater<string> > map;
마지막으로 출력 시에 map 처음부터 끝까지 iterator를 돌리면서 value가 1로 저장된 key 값을 출력한다.
#include <iostream>
#include <map>
#include <sstream>
using namespace std;
int main() {
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
int n;
(cin >> n).ignore();
map<string, int, greater<string> > map;
for (int i = 0; i < n; i++) {
string line;
getline(cin, line);
stringstream ss(line);
string s1, s2;
ss >> s1 >> s2;
if (s2 == "enter") {
map[s1] = 1;
} else if (s2 == "leave") {
map[s1] = 0;
}
}
for (auto iter = map.begin(); iter != map.end(); iter++) {
if (iter->second == 1)
cout << iter->first << '\n';
}
}
참고
https://life-with-coding.tistory.com/305