📄 문제
수많은 마라톤 선수들이 마라톤에 참여하였습니다. 단 한 명의 선수를 제외하고는 모든 선수가 마라톤을 완주하였습니다.
마라톤에 참여한 선수들의 이름이 담긴 배열 participant와 완주한 선수들의 이름이 담긴 배열 completion이 주어질 때, 완주하지 못한 선수의 이름을 return 하도록 solution 함수를 작성해주세요.
📝 풀이
#include <string>
#include <vector>
#include <unordered_map>
using namespace std;
string solution(vector<string> participant, vector<string> completion) {
unordered_map<string, int> m;
// 참가자 이름을 모두 담기, 동명이인은 개수 증가
for(string s : participant)
++m[s];
// 완주자 이름을 기반으로 감소
for(string s : completion)
--m[s];
// p의 개수가 1 이상이라면, 완주하지 못한 사람
for(pair<string, int> p : m)
if(p.second > 0)
return p.first;
return NULL;
}
- map을 이용하여 참가자의 이름을 기반으로 개수를 더하고 뺍니다.
- 마지막 for문에서 참가자의 이름을 기반으로하여 수가 1 이상이라면, 완주하지 못한 사람으로 간주하여 정답을 리턴합니다.
'algorithms (C++)' 카테고리의 다른 글
[C++][프로그래머스] 연속된 부분 수열의 합 🔥 (0) | 2023.10.29 |
---|---|
[C++][프로그래머스] 요격 시스템 🔥 (1) | 2023.10.29 |
[C++][프로그래머스] 체육복 🔥 (0) | 2023.10.26 |
[C++][프로그래머스] 크레인 인형뽑기 게임 (1) | 2023.10.26 |
[C++][프로그래머스] 키패드 누르기 (0) | 2023.10.26 |