Computer Science/Algorithm Problem

백준] 7785 - 회사에 있는 사람(KBTU)

TwinParadox 2018. 2. 3. 17:12
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
728x90