#include <string>
#include <vector>
#include <algorithm>
using namespace std;
bool solution(vector<string> v) {
sort(v.begin(), v.end());
for (int i = 0; i < v.size() - 1; i++)
if (v[i] == v[i + 1].substr(0, v[i].size())) return false;
return true;
}
배열을 Lexicographic order로 정렬하게 된다면, 굳이 해시를 사용하지 않아도 이 문제를 해결할 수 있다. 사전식 순으로 정렬한다면 바로 옆끼리 비교를 해서 접두사가 있는 지 알 수 있기 때문에 sort로 정렬을 하면 길이가 짧은 순으로 오름차순 정렬이 된다. 그러면 왼쪽에 있는 v[ i ]와 v[ i + 1 ]을 비교하여 오른쪽에 있는 문자열이 왼쪽에 있는 문자열을 포함하는지 확인만 하면 쉽게 해결할 수 있다.