Deff_Dev

[프로그래머스] 완주하지 못한 선수 (C++) 본문

코딩테스트/프로그래머스

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

Deff_a 2024. 11. 5. 18:56

문제

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

풀이

이 문제는 참가자(participant) 중 완주(completion)하지 못한 한 사람을 찾는 문제이다.

 

unordered_map을 사용하여 완주한 사람의 수를 저장한다.

이후, 참가자들을 탐색하여, unordered_map의 값이 0인 사람을 찾은 뒤 return한다.

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

unordered_map<string, int> completionMap;
string solution(vector<string> participant, vector<string> completion) {
    string answer = "";
    
    for(int i = 0; i < completion.size(); i++){
        completionMap[completion[i]]++;
    }
    
    for(int i = 0; i< participant.size(); i++){
        if(completionMap[participant[i]] == 0){
            answer = participant[i];
            break;
        }
        
        completionMap[participant[i]]--;
    }
        return answer;
}

unordered_map을 사용한 이유

unordered_map은 정렬 연산을 하지 않기 때문에 map보다 연산 속도가 빨라서 사용했다.

map 사용 (좌), unordered_map 사용 (우)