문제의 조건 중 "단 한 명의 선수를 제외하고는 모든 선수가 마라톤을 완주하였습니다."와 "마라톤에 참여한 선수들의 이름이 담긴 배열 participant와 완주한 선수들의 이름이 담긴 배열 completion이 주어질 때"를 보고, participant와 completion을 sort하여 앞에서부터 비교해나가야겠다 는 생각을 했습니다.
코드
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
string solution(vector<string> participant, vector<string> completion) {
string answer = "";
// participant와 completion을 sort
sort(participant.begin(), participant.end());
sort(completion.begin(), completion.end());
// 앞에서부터 비교
for(int i = 0; i < completion.size(); i++){
// 비교해서 같으면 무시
if(participant[i] == completion[i]) continue;
// 비교해서 다르면, participant[i]는 완주하지 못한 선수
else{
answer = participant[i];
break;
}
}
// answer에 무언가가 지정되어 있지 않다면, participant의 맨 마지막 선수가 완주하지 못한 선수
if(answer == ""){
answer = *(participant.end() - 1);
}
return answer;
}