풀려고 했는데 사실 이미 푼 문제라서 기록이 남아있었다..
푼건 알고있었지만 새롭게 풀고싶었는데 이미 코드가 보여서 어쩔 수가 없었다..
https://programmers.co.kr/learn/courses/30/lessons/42576
이 문제는 블로그에 기록을 안한것같아서 기억을 더듬어 보자면
이문제는 동명이인이 있다는게 문제였다
처음에는 find로 찾아서 풀었지만
동명이인때문에 find로 간단히 풀 수가 없었다.
그래서 sort로 풀었는데 이게 오히려 더 간단하다..
logic 설계
1) 참가자 인원이 담긴 벡터와 완주자가 담긴 벡터를 정렬한다. 어떤식으로 정렬하든 상관없다.
아마 default가 오름차순 less였던 것 같다.
뭐 차순은 중요하지 않기때문에 정렬을 하고
2) 두 벡터를 비교한다.
정렬을 했기때문에 두 벡터는 똑같이 정렬됐을 것이고, 순서대로 비교하다보면 같지 않은 것을 발견할 수 있다.
3) 만약 두 벡터의 요소가 다르다면 그때 participant 벡터를 리턴해줘야한다! => 완주하지 못한 참가자이므로..
끄읏
처음에 정렬이라는 것만 생각해내면 되게 단순하게 풀 수 있는 문제다
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
string solution(vector<string> participant, vector<string> completion) {
string answer = "";
sort(participant.begin(),participant.end());
sort(completion.begin(),completion.end());
for(int i=0;i<participant.size();i++){
if(completion[i]!=participant[i])
return participant[i];
}
return answer;
}