https://www.acmicpc.net/problem/10546
취업이슈로 거의 반년만에 푸는 백준,,,
다시 초심으로 돌아가 실버 기초문제루!!
자료구조 선택이 중요한 문제인 것 같았다.
조건이라고 하면...
N개의 원소를 삽입, 삭제 해야 하므로 삽입, 삭제의 성능이 중요하다.
그런데 맨 앞,뒤에서 삽입/삭제가 일어나지는 않음!
검색해서 원하는 원소를 찾아야 한다.
-> 아무래도 해시 자료구조가 좋겠지..?
map, set, unordered_map, unordered_set 탈락!
그리고, 중복 원소 삭제 시 중복 원소들 중 하나만 삭제되어야 함
그러면 남는건?
multiset!!!
value는 필요없으니...
그치만, multiset에서 무작정 erase
함수를 사용하면, 모든 중복 원소가 삭제된다.
따라서 iterator
를 사용해서, 원하는 참가자를 삭제시켜야 함.
그것만 제외하면 굿굿~
이지하게 풀었다!
#include <iostream>
#include <set>
using namespace std;
int main()
{
int n;
cin >> n;
multiset<string> mem;
string name;
for (int i = 0; i < n; i++)
{
cin >> name;
mem.insert(name);
}
for (int i = 0; i < n - 1; i++)
{
cin >> name;
mem.erase(mem.find(name));
}
cout << *mem.begin();
}