본문 바로가기

알고리즘/프로그래머스

[프로그래머스-코딩테스트 고득점Kit] 전화번호 목록

Lv.2 문제로 해시 카테고리에 있는 문제입니다.

휴대폰 번호를 key로, 1을 value로 unordered_map에 넣은 후, 각 휴대폰 번호의 접두어가 될 수 있는 string을 key로 하여 value가 1인지 확인하였습니다.

#include <string>
#include <vector>
#include <algorithm>
#include <unordered_map>
using namespace std;

bool solution(vector<string> phone_book) {
    bool answer = true;
    unordered_map<string,int> phones;

    for(auto a:phone_book)
    {
        phones.insert({a,1});
    }
    
    for(auto phone : phone_book)
    {
        for(int i=1;i<phone.size();i++)
        {
            if(phones[phone.substr(0,i)] == 1)
                return false;
        }
        
    }
    return answer;
}