https://programmers.co.kr/learn/courses/30/lessons/42576

string solution(vector<string> participant, vector<string> completion) {
    string answer = "";
    sort(participant.begin(), participant.end());
    sort(completion.begin(), completion.end());
    
    for(int i = 0; i < completion.size(); i++){
        if(participant[i] != completion[i])
            return participant[i];
    }
    
    
    return participant.back();
}

근데 해쉬 파트 문제였다...

string solution(vector<string> participant, vector<string> completion) {
    //string answer = "";
    std::unordered_multiset<string> u_mset;
    for(int i =0; i < participant.size(); ++i){
        u_mset.emplace(participant[i]);
    }
    
	for (int i = 0; i < completion.size(); ++i) {
		auto it = u_mset.find(completion[i]);
		u_mset.erase(it);
	}
    
    return *u_mset.begin();
}

multiset 으로 풀어봤다... 딱히 key 와 value 를 나눌 필요는 없어 보였다.

새롭게 알게 된 건... erase 할 때 같은 key 는 모두 지워버린 다는 것? 하나만 지우게 강제해줬다.