728x90
시간 제한 : 1초
메모리 제한 : 128MB
입력
첫째 줄에 로그에 기록된 출입 기록의 수 n이 주어진다. (2 ≤ n ≤ 106) 다음 n개의 줄에는 출입 기록이 순서대로 주어지며, 각 사람의 이름이 주어지고 "enter"나 "leave"가 주어진다. "enter"인 경우는 출근, "leave"인 경우는 퇴근이다.
회사에는 동명이인이 없으며, 대소문자가 다른 경우에는 다른 이름이다.
출력
현재 회사에 있는 사람의 이름을 사전 순의 역순으로 한 줄에 한 명씩 출력한다.
소스코드
#include <iostream> #include <string> #include <map> #include <functional> #include <algorithm> using namespace std; int main(void) { int n; map<string, bool, greater<string> > list; cin >> n; while (n--) { string name, op; cin >> name >> op; if (op == "enter") list[name] = true; else list[name] = false; } for (map<string, bool, greater<string> >::iterator it = list.begin(); it != list.end(); it++) if (it->second == true) cout << it->first << '\n'; }
Tip
동명이인이 없는 상태에서 여러 사람들의 근무 상황을 입력받는다. map 자료구조를 사용하면 적절히 처리할 수 있다.
728x90
'Computer Science > Algorithm Problem' 카테고리의 다른 글
백준] 1032 - 명령 프롬프트 (0) | 2018.02.04 |
---|---|
백준] 4613 - Quicksum(ACM-ICPC Regional) (0) | 2018.02.03 |
백준] 11637 - 인기 투표(ACM-ICPC Regional) (0) | 2018.02.03 |
백준] 3059 - 등장하지 않는 문자의 합 (0) | 2018.01.31 |
백준] 9324 - 진짜 메시지(ACM-ICPC Regional) (0) | 2018.01.31 |