문제 설명

단 한 명의 선수를 제외하고는 모든 선수가 마라톤을 완주했을 때, 완주하지 못한 선수의 이름을 return

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

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

문제 풀이법

map을 사용하면 간단하게 풀 수 있다

 

우선 participant 벡터를 순회하면서 map에 이름을 key값으로 하여 value에는 1을 넣어준다

이후 completion 벡터를 순회하면서 map의 key에 해당하는 value를 0으로 한다

 

모든 처리를 끝냈을 때, map의 value 값이 1이면 완주하지 못한 선수이므로 해당 값의 key를 return 한다

 

소스 코드

#include <string>
#include <vector>
#include <map>

using namespace std;

string solution(vector<string> participant, vector<string> completion) {
    string answer = "";
    
    map<string, int> m;
    
    for (int i = 0; i < participant.size(); i++) {
        m[participant[i]]++;
    }
    
    for (int i = 0; i < completion.size(); i++) {
        m[completion[i]]--;
    }
    
    map<string, int>::iterator it;
    
    for (it = m.begin(); it != m.end(); it++) {
        if (it->second == 1)
            return it->first;
    }
    
    return answer;
}
복사했습니다!