전체 배열을 정렬한 다음 접두어니까 이웃한 두 번호 중 왼쪽 번호가 오른쪽 번호의 접두어인지만 확인하면된다. str::find()
를 사용하면 쉽게 구할 수 있지만, 123과 41235처럼 접두어가 아니라 가운데나 뒤에 오는 경우도 있으니 꼭 “접두어”인지 확인해줄 것!
#include <string>
#include <vector>
#include <algorithm> // sort
using namespace std;
bool solution(vector<string> phone_book) {
bool answer = true;
int i, size = phone_book.size();
sort(phone_book.begin(), phone_book.end());
for (i = 0; i < size - 1; i++) {
if (phone_book[i + 1].find(phone_book[i]) != string::npos && phone_book[i + 1][0] == phone_book[i][0]) return false;
}
return true;
}