[프로그래머스] 전화번호 목록

임윤희·2024년 10월 12일

전화번호 목록

🔍 알고리즘 분류

  • 해시

💡 문제 풀이

  1. 전화번호를 key로 갖고 1을 value로 갖는 해시테이블 생성
  2. 전화번호 접두사 1개부터 단어 길이만큼 잘라가며 해시테이블에 있는지 확인

📄 코드

  • C++
#include <string>
#include <vector>
#include <map>

using namespace std;

bool solution(vector<string> phone_book) {
    bool answer = true;
    
    // 해시테이블 생성
    map<string, int> m;
    
    // key로 전화번호, 값으로 1 저장
    for(int i = 0; i < phone_book.size(); i++) {
        m[phone_book[i]]++;
    }
    
    // 각 단어 확인
    for(int i = 0; i < phone_book.size(); i++) {
        // 단어에서 접두사 자르기
        for (int j = 1; j < phone_book[i].size(); j++) {
            // 접두사가 해시테이블에 있을 때
            if(m[phone_book[i].substr(0, j)]) return false;
        }
    }
    
    return answer;
}

0개의 댓글