1. 문제 분석
- 알파벳 첫 글자대로 분류하고 개수가 다른거에서 비교하면 빠르지 않을까 생각했다.
- 위 방법대로 하면 2번의 순회면 끝나지 않을까 생각했다.
- 어떻게 보면 비효율적일거 같다 생각하다가, 둘다 정렬 하고 비교하면 코드 자체는 간단하다 생각했다.
2. 문제 풀이 과정(삽질)
- 삽질은 딱히 없고 풀었다.
- 알고보니 레벨 1의 간단한 문제
3. 문제 해결
- 두 입력 벡터를 정렬하고 하나씩 비교했다.
- 비교하다 다른 부분이 나오면 participant의 이름이 답이다.
- completion.size()만큼만 비교하고 답이 안나오면 participant의 마지막이 답이다.
4. 코드
#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 < completion.size(); i++)
if(participant[i] != completion[i])
return participant[i];
return participant.back();
}
5. 고수의 코드를 보고 배우기
#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<completion.size();i++)
{
if(participant[i] != completion[i])
return participant[i];
}
return participant[participant.size() - 1];
}