Algorithm/프로그래머스

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

pinevienna 2021. 2. 4. 16:08

 

 

마라톤에 참여한 선수들의 이름이 담긴 배열 participant와

완주한 선수들의 이름이 담긴 배열 completion이 주어질 때,

완주하지 못한 선수의 이름을 return하는 문제

 

 

completion의 길이는 participant의 길이보다 1 작다는 제한사항이 있다

즉 한명 빼고 모두 완주한다는 것

벡터를 모조리 뒤질 필요 없이 이름순으로 정렬해놓고 비교하면 된다

 

예를들어 마라톤 참가자가 eden, leo, kiki, adam이고

완주한 사람은 adam을 제외한 eden, kiki, leo라고 하자

participant = { adam, eden, kiki, leo }

completion = { eden, kiki, leo } 로 정렬하고,

part[i]와 com[i]를 비교하면서 일치하지 않으면 part[i]를 return하면 된다

 

만약 모두 일치한다면 part의 가장 마지막 사람이 완주하지 못했다는 말이니까

가장 마지막 참가자를 return 해주면 된다

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <string>
#include <vector>
#include <algorithm>
 
using namespace std;
 
string solution(vector<string> participant, vector<string> completion) {
    string answer = "";
 
    sort(participant.begin(), participant.end());
    sort(completion.begin(), completion.end());
 
    for (int i = 0; i < completion.size(); i++) {
        if (completion[i] != participant[i]) {
            return participant[i];
        }
    }
 
    return participant[participant.size() - 1];
}
cs