반응형

 

 

 

 

풀이코드

#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

+ Recent posts