#include <string> #include <vector> #include <unordered_map> using namespace std; string solution(vector<string> participant, vector<string> completion) { string answer = ""; unordered_map<string, int=""> um_c; for(string temp : completion){ auto iter = um_c.find(temp); //최초 입력 if( iter == um_c.end() ) { um_c.insert(pair<string, int="">(temp, 1)); } //중복 입력 else { int size = iter->second; um_c[temp] = ++size; } } for(string temp : participant) { auto iter = um_c.find(temp); //참가자의 이름이 완주자 목록에 없을 경우 정답 if(iter == um_c.end()) { answer = temp; break; } else { int size = iter->second; if(iter->second < 1) { answer = temp; break; } um_c[temp] = --size; } } return answer; }
간략 설명 :
- 완주자 목록을 만든 뒤 참가자 목록의 참가자가 완주자 목록에 있는지 확인
목록에 없을 경우 완주자가 아니므로 정답!
unordered_map의 경우 값 넣을 때 pair로 넣거나
um_c.insert({temp, 1});
와 같이 배열로 넣는게 가능
단순히 배열말고도 다른 방식으로도 짜보고 싶어서 pair로 넣었다
동명이인에 대해 처리하기 위해 이름이 같은 경우 명수 +1
for문 돌면서 참가자 목록의 참가자가 완주자 목록에 있는지 확인
'알고리즘' 카테고리의 다른 글
2020 카카오 공채 -자물쇠와 열쇠 C++ (0) | 2020.06.04 |
---|---|
2019 카카오 개발자 겨울 인턴십 -징검다리 건너기 C++ (0) | 2020.05.31 |
2019 카카오 개발자 겨울 인턴쉽 -불량 사용자 C++ (0) | 2020.05.28 |
모든 부분 집합 구하기 (0) | 2020.05.22 |
2019 카카오 개발자 인턴십 -호텔 방 배정 C++ 풀이 (0) | 2020.05.21 |