알고리즘
프로그래머스 전화번호 목록 C++
fulladdr
2023. 10. 1. 18:32
unordered map을 사용해서 해결했다.
모든 전화번호에 대해서 문자열 그대로 map 에 등록해둔다.
그리고 각각의 전화번호에 대해서 부분 문자열을 계산한 후에 이 부분문자열과 map에 등록된 문자열 중에 일치하는 것이 있는지 확인하고 만약 일치하는 것이 있다면 접두사가 겹치는 값이 있는 것이므로 false를 리턴하고 아니라면 true를 리턴하도록 코드를 작성했다.
#include <string>
#include <vector>
#include <unordered_map>
#include <iostream>
using namespace std;
unordered_map<string, int> m;
bool solution(vector<string> phone_book) {
bool answer = true;
for (int i=0;i<phone_book.size();i++){
m[phone_book[i]]=1;
}
for (int i=0;i<phone_book.size();i++){
string ss;
for (int j=0;j<phone_book[i].size()-1;j++){
ss+=phone_book[i][j];
if (m[ss]==1){
return false;
}
}
}
return answer;
}