[ C++ 백준 7785 ] 회사에 있는 사람

2023. 11. 7. 16:00알고리즘/백준 문제풀이

문제_링크

 

7785번: 회사에 있는 사람

첫째 줄에 로그에 기록된 출입 기록의 수 n이 주어진다. (2 ≤ n ≤ 106) 다음 n개의 줄에는 출입 기록이 순서대로 주어지며, 각 사람의 이름이 주어지고 "enter"나 "leave"가 주어진다. "enter"인 경우는

www.acmicpc.net



set또는 map을 사용하는 문제다.

#include <iostream>
#include <set>
using namespace std;

set<string, greater<string>> enterMember;

int main()
{
	int n;
	string inputName, command;

	cin >> n;
	for (int i = 0; i < n; ++i)
	{
		cin >> inputName >> command;
		if (command == "enter")
		{
			enterMember.insert(inputName);
		}
		else if (command == "leave")
		{
			if (enterMember.find(inputName) != enterMember.end())
				enterMember.erase(inputName);
		}
	}

	for (auto val : enterMember)
		cout << val << '\n';


}

 

이 조건 때문에 기본적으로 정렬이 되는 set을 사용했다.

set에 정렬을 역순으로 바꾸기 위해 set<string, greater<string>>으로 선언해서 해결했다.