참여자와 완주자 배열이 주어지면 완주하지 못한 선수의 이름을 리턴하면 되는 쉬운 문제다.

난 map을 이용해서 해결했는데 다른 사람의 풀이를 보니 두 배열을 정렬하고 이름이 같지 않다면 그 이름을 리턴해주는 식으로 풀었다.

 

#include <string>
#include <vector>
#include <map>
using namespace std;

string solution(vector<string> participant, vector<string> completion) {
    string answer = "";
    map<string, int> m;
    
    for (auto i : participant) {
        m[i]++;
    }
    for (auto i : completion) {
        m[i]--;
    }
    for (auto i : participant) {
        if (m[i] == 1) answer = i;
    }
    
    return answer;
}

 

map에 참여자의 이름을 키값으로 value를 하나씩 올려주고, 완주자의 배열을 돌면서 그 개수만큼 줄여주면

마지막에 map에 남아있는 사람이 완주하지 못한 사람이니 리턴해줬다.

 

 

+ Recent posts