반응형
풀이코드
#include <string>
#include <vector>
#include <unordered_map>
using namespace std;
#define EXIST 1
#define FAIL 0
string GetAnswer(const vector<string>&, const vector<string>&);
string solution(vector<string> participant, vector<string> completion) {
string answer = GetAnswer(participant, completion);
return answer;
}
string GetAnswer(const vector<string>& participant, const vector<string>& completion)
{
string returnStr = "";
unordered_map<string, int> map;
for (int i = 0; i < completion.size(); i++)
{
if (map.count(completion[i]) != EXIST)
{
map.insert(make_pair(completion[i], 1));
}
else
{
map[completion[i]]++;
}
}
for (int i = 0; i < participant.size(); i++)
{
if(map.count(participant[i]) != EXIST)
{
returnStr = participant[i];
break;
}
else
{
map[participant[i]]--;
if (map[participant[i]] < FAIL)
{
returnStr = participant[i];
break;
}
}
}
return returnStr;
}
- 완주한 선수들의 목록을 map으로 묶어서, 참가한 선수들 목록 대상으로 탈락한 선수의 이름을 반환한다.
- map에 키값이 없으면 탈락한 선수이므로 해당 선수의 이름을 반환.
- map에 키값이 있으면 value값을 감소시킨 뒤, value가 음수가 되면 해당 이름의 선수가 탈락한 것이므로 해당 선수의 이름을 반환.
기타
- 없음.
반응형
'Stack > Coding test' 카테고리의 다른 글
[C++ / Lv2] 위장 (0) | 2022.02.07 |
---|---|
[C++ / Lv2] 전화번호 목록 (0) | 2022.02.05 |
[C++ / Lv2] 문자열 압축 (0) | 2022.02.02 |
[C# / Lv2] H-Index (0) | 2022.01.19 |
[C# / Lv2] 가장 큰 수 (0) | 2022.01.18 |