본문 바로가기
문제 풀이/프로그래머스 (Programmers)

[C++] 프로그래머스 : 완주하지 못한 선수

by 희조당 2021. 7. 1.
728x90

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

 

코딩테스트 연습 - 완주하지 못한 선수

수많은 마라톤 선수들이 마라톤에 참여하였습니다. 단 한 명의 선수를 제외하고는 모든 선수가 마라톤을 완주하였습니다. 마라톤에 참여한 선수들의 이름이 담긴 배열 participant와 완주한 선수

programmers.co.kr


문제 풀이

 map을 선언하고 완주자에 대해서 value 값을 +1 해준다.

참가자에 대해서 value 값을 -1 해준다.

map의 값이 음수면 완주하지 못한 대상이므로 리턴해준다.

느낀 점

 이번 기회로 STL 제네릭 컨테이너인 map에 대해서 공부하게 되었다. map을 이해하면 쉬운 문제이다.

코드

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

string solution(vector<string> participant, vector<string> completion) {
    map<string, int> m;

    for (auto c : completion) {
        m[c] += 1;
    }
    for (auto p : participant) {
        m[p] -= 1;
        if (m[p] < 0) return p;
    }
}
#include <string>
#include <vector>
#include <algorithm>
using namespace std;

string solution(vector<string> participant, vector<string> completion) {
    sort(participant.begin(), participant.end());
    sort(completion.begin(), completion.end());
    
    for (int i = 0; i < completion.size(); i++) {
        if (participant[i] != completion[i]) {
            return participant[i];
        }
    }
}

댓글