
참여자와 완주자 배열이 주어지면 완주하지 못한 선수의 이름을 리턴하면 되는 쉬운 문제다.
난 map을 이용해서 해결했는데 다른 사람의 풀이를 보니 두 배열을 정렬하고 이름이 같지 않다면 그 이름을 리턴해주는 식으로 풀었다.
#include <string>
#include <vector>
#include <map>
using namespace std;
string solution(vector<string> participant, vector<string> completion) {
string answer = "";
map<string, int> m;
for (auto i : participant) {
m[i]++;
}
for (auto i : completion) {
m[i]--;
}
for (auto i : participant) {
if (m[i] == 1) answer = i;
}
return answer;
}
map에 참여자의 이름을 키값으로 value를 하나씩 올려주고, 완주자의 배열을 돌면서 그 개수만큼 줄여주면
마지막에 map에 남아있는 사람이 완주하지 못한 사람이니 리턴해줬다.
'Programmers' 카테고리의 다른 글
[프로그래머스 C++] 카카오프렌즈 컬러링북 (0) | 2020.09.28 |
---|---|
[프로그래머스 C++] 소수 찾기 (0) | 2020.09.27 |
[프로그래머스 C++] 모의고사 (0) | 2020.09.26 |
[프로그래머스 C++] 두 개 뽑아서 더하기 (0) | 2020.09.26 |
[프로그래머스 C++] 크레인 인형뽑기 게임 (0) | 2020.09.26 |