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 |