https://programmers.co.kr/learn/courses/30/lessons/42577
#include <string>
#include <vector>
#include<algorithm>
using namespace std;
bool solution(vector<string> phoneBook) {
bool answer = true;
sort(phoneBook.begin(), phoneBook.end());
for ( int i = 0 ; i < phoneBook.size() - 1 ; i++ )
{
if ( phoneBook[i] == phoneBook[i+1].substr(0, phoneBook[i].size()) )
{
answer = false;
break;
}
}
return answer;
}
저는 이 문제를 해시테이블로 풀지 않았습니다 전화번호가 다른 전화번호의 접두사가 되는 경우가 있는지를 확인 하는 문제인데 먼저 전화번호 목록을 정렬을 합니다
["119", "97674223", "1195524421"] //정렬 전
["119", "1195524421", "97674223"] //정렬 후
오름차순으로 정렬이 되는데 숫자가 같다면 길이가 작은 순으로 정렬이 됩니다.
그렇기 때문에 정렬 후에 전화번호 목록을 순차적으로 돌면서 다음전화번호와 겹치는지를 확인하면 됩니다.