프로그래머스(Programmers)
프로그래머스 - 완주하지 못한 선수 C++
cosmohoo
2020. 7. 11. 00:30
반응형
문제 설명
수많은 마라톤 선수들이 마라톤에 참여하였습니다. 단 한 명의 선수를 제외하고는 모든 선수가 마라톤을 완주하였습니다. 마라톤에 참여한 선수들의 이름이 담긴 배열 participant와 완주한 선수들의 이름이 담긴 배열 completion이 주어질 때, 완주하지 못한 선수의 이름을 return 하도록 solution 함수를 작성해주세요. |
제한사항
|
입출력 예
participant completion return
[leo, kiki, eden] | [eden, kiki] | leo |
[marina, josipa, nikola, vinko, filipa] | [josipa, filipa, marina, nikola] | vinko |
[mislav, stanko, mislav, ana] | [stanko, ana, mislav] | mislav |
=> unordered_map 혹은 map을 사용할 줄 아는지 묻는 문제입니다.
=> 전자의 경우 정렬하지 않으므로, 속도가 더 빠릅니다.
=> 저는 unordered_map을 사용하였습니다.
=> key값으로 string 값을 주고, value는 기본 int 0으로 시작하였습니다.
=> 추가하며 value의 값을 증가시켰습니다.
=> 완주자를 확인하며 value의 값을 감소시켰습니다.
=> 해당과정을 완료 후, value의 값이 0 이상인 것은 완주를 하지 못한 선수입니다.
<code>
#include <string>
#include <vector>
#include <unordered_map>
using namespace std;
string solution(vector<string> participant, vector<string> completion) {
string answer = "";
unordered_map<string, int> True_val;
for(string s : participant)
{
++True_val[s];
}
for(string s: completion)
{
--True_val[s];
}
for(auto pair : True_val)
{
if(pair.second >0) //지워지지 않은 녀석
{
return pair.first;
}
}
return answer;
}
반응형