참가자 이름과 완주자이름을 비교하여 완주하지못한 사람을 찾으면 된다.
나는 map 자료형을 사용해서 참여자 벡터를 순회하면서 해당 이름의 값을 증가시켜주고 그 뒤에 완주자 벡터를 순회하면서 해당 이름의 값을 줄여준다. 이때 해당 이름의 값이 1보다 크거나 같을 경우 통과하지 못하였다는 것이므로 answer에 추가해준다.
동명이인이 있을 수 도 있어서 answer에 넣은 뒤 해당 이름의 값을 줄여준다.
#include <string>
#include <vector>
#include <map>
using namespace std;
map<string,int> m1;
string solution(vector<string> participant, vector<string> completion) {
string answer = "";
for(int i=0;i<participant.size();i++){
m1[participant[i]]++;
}
for(int i=0;i<completion.size();i++){
m1[completion[i]]--;
}
for(int i=0;i<participant.size();i++){
if(m1[participant[i]]>=1){
answer+=participant[i];
m1[participant[i]]--;
}
}
return answer;
}
'코딩테스트 > 프로그래머스' 카테고리의 다른 글
[프로그래머스][LV 1][C++] [PCCE 기출문제] 10번 / 데이터 분석 (1) | 2024.03.07 |
---|---|
[프로그래머스][LV 1][C++][PCCE 기출문제] 9번 / 이웃한 칸 (0) | 2024.03.06 |
[프로그래머스][LV 1][C++] 체육 (3) | 2024.03.05 |
[프로그래머스][LV 1][C++] [1차] 다트 게임 (2) | 2024.03.05 |
[프로그래머스][LV 1][C++] 실패율 (0) | 2024.03.04 |