1. 벡터풀이
정렬하면 앞숫자 순으로 정렬된다
따라서 접두사인 경우 인접해있으니 인접한 원소끼리 비교하면 끝
2. 해시풀이
모든 번호를 map에 넣고 1을 값을 주어 존재를 표시
이 후 모든 번호에 대해 앞자리부터 한자리씩 더해가며 map에 존재하는지 비교하면 끝
#include <string>
#include <vector>
#include <algorithm>
#include <unordered_map>
using namespace std;
bool solution(vector<string> phone_book) {
bool answer = true;
// int pSize = phone_book.size();
// sort(phone_book.begin(), phone_book.end());
// for(int i=0; i<pSize - 1; i++){
// if(phone_book[i] == phone_book[i+1].substr(0, phone_book[i].length())){
// return false;
// }
// }
unordered_map <string, int> map;
int pSize = phone_book.size();
sort(phone_book.begin(), phone_book.end());
for(string p : phone_book){
map[p]++;
}
for(int i=0; i<pSize; i++){
int pl = phone_book[i].length();
string pn = "";
for(int j=0; j<pl; j++){
pn += phone_book[i][j];
if(map[pn] >0 && pn != phone_book[i])
return false;
}
}
return answer;
}
'알고리즘 > 알고리즘' 카테고리의 다른 글
[C++] 프로그래머스 : 코딩테스트연습_스택/큐 (0) | 2022.02.10 |
---|---|
[C++] 프로그래머스 : 위장 (0) | 2022.01.04 |
[C++] 프로그래머스 : 완주하지 못한 선수 (0) | 2022.01.03 |
[C++] 백준 20058번 : 마법사 상어와 파이어스톰 (0) | 2021.10.09 |
[C++] 백준 10159번 : 저울 (0) | 2021.09.10 |