오답노트

[해시] BOJ 7785번 회사에 있는 사람 본문

C,C++/코딩테스트

[해시] BOJ 7785번 회사에 있는 사람

권멋져 2022. 6. 10. 17:05
https://www.acmicpc.net/problem/7785
 

7785번: 회사에 있는 사람

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

www.acmicpc.net

- 문제 파악

N개의 회사의 출입 현황이 문자열로 이름과 enter 또는 이름과 leave로 입력된다. 이 때 회사에 남아있는 사람을 사전 역순으로 정렬하여 출력하라.

 

- 정답

해시를 사용했다

해시는 정렬을 할 수 없으므로 vector로 넘겨서 정렬 후 출력했다.

 

#include "bits/stdc++.h"
#include <unordered_set>
using namespace std;

int main()
{
	int n;
	cin >> n;

	unordered_set<string> unset;
	
	while (n--)
	{
		string name, status;
		cin >> name >> status;

		if (status == "enter")
			unset.insert(name);	
		else
			unset.erase(name);
	}

	vector<string> vec(unset.begin(),unset.end());

	sort(vec.begin(), vec.end(),greater<>());

	for (auto a : vec)
		cout << a << "\n";

}