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

Taegang Yun·2023년 9월 5일
1

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

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

map<string, int> map_participant;
map<string, int> map_completion;
string solution(vector<string> participant, vector<string> completion) {
    string answer = "";
    string tmp = "";
    
    for(int i = 0 ; i < participant.size(); i++)
    {
        map_participant[participant[i]]++;
        map_completion[participant[i]] = 0;
    }
    
    for(int i = 0 ; i < completion.size(); i++)
    {
        map_completion[completion[i]]++;
    }    
    
    for(int i = 0 ; i < participant.size(); i++)
    {
        if(map_completion[participant[i]] != map_participant[participant[i]])
            if(answer == "") answer += participant[i];
    }
    
    return answer;
}

처음엔 이렇게 짰는데.. 정확성은 100점 나왔는데 마지막 효율성에서

이이 시간초과 났다

더 효율적으로.. 짜야한다는 거구만

그래서 굳이 저 participant 배열을 모두 훑을 필요 없이 그냥 map size만큼만 탐색하면 되니까

for(pair<string, int> x : map_participant)
    {
        if(map_participant[x.first] != map_completion[x.first])
            if (answer == "") answer += x.first;
    }
    

이렇게 했다!

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

map<string, int> map_participant;
map<string, int> map_completion;
string solution(vector<string> participant, vector<string> completion) {
    string answer = "";
    string tmp = "";
    
    for(int i = 0 ; i < participant.size(); i++)
    {
        map_participant[participant[i]]++;
        map_completion[participant[i]] = 0;
    }
    
    for(int i = 0 ; i < completion.size(); i++)
    {
        map_completion[completion[i]]++;
    }    
    
    for(pair<string, int> x : map_participant)
    {
        if(map_participant[x.first] != map_completion[x.first])
            if (answer == "") answer += x.first;
    }
    
    return answer;
}

profile
언젠간 전문가가 되겠지

1개의 댓글

comment-user-thumbnail
2023년 9월 5일

열심히 하시네요 ㅎㅎㅎㅎ 멋져요!

답글 달기

관련 채용 정보