https://school.programmers.co.kr/learn/courses/30/lessons/42576
#include <string>
#include <vector>
#include <map>
#include <iostream>
using namespace std;
map<string, int> map_participant;
map<string, int> map_completion;
string solution(vector<string> participant, vector<string> completion) {
string answer = "";
string tmp = "";
for(int i = 0 ; i < participant.size(); i++)
{
map_participant[participant[i]]++;
map_completion[participant[i]] = 0;
}
for(int i = 0 ; i < completion.size(); i++)
{
map_completion[completion[i]]++;
}
for(int i = 0 ; i < participant.size(); i++)
{
if(map_completion[participant[i]] != map_participant[participant[i]])
if(answer == "") answer += participant[i];
}
return answer;
}
처음엔 이렇게 짰는데.. 정확성은 100점 나왔는데 마지막 효율성에서
이이 시간초과 났다
더 효율적으로.. 짜야한다는 거구만
그래서 굳이 저 participant 배열을 모두 훑을 필요 없이 그냥 map size만큼만 탐색하면 되니까
for(pair<string, int> x : map_participant)
{
if(map_participant[x.first] != map_completion[x.first])
if (answer == "") answer += x.first;
}
이렇게 했다!
#include <string>
#include <vector>
#include <map>
#include <iostream>
using namespace std;
map<string, int> map_participant;
map<string, int> map_completion;
string solution(vector<string> participant, vector<string> completion) {
string answer = "";
string tmp = "";
for(int i = 0 ; i < participant.size(); i++)
{
map_participant[participant[i]]++;
map_completion[participant[i]] = 0;
}
for(int i = 0 ; i < completion.size(); i++)
{
map_completion[completion[i]]++;
}
for(pair<string, int> x : map_participant)
{
if(map_participant[x.first] != map_completion[x.first])
if (answer == "") answer += x.first;
}
return answer;
}
열심히 하시네요 ㅎㅎㅎㅎ 멋져요!