프로그래머스 - 전화번호 목록 - Level 2

Byungwoong An·2021년 6월 26일
0

문제

풀이전략

  1. 어떤 번호가 다른번호의 접두어인지를 찾아야한다.
  2. string 하나씩 다른것들과 비교하면 된다. 이때 unorderd_map 을 사용하면 더 편리하다.

코드

나의 개인적으로 깔끔하지 않다고 생각하기 때문에 다른분의 코드로 적겠다.

다른분 코드

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

bool solution(vector<string> phone_book){
    unordered_map<string, int> hash_map;
    
    for(int i=0; i<phone_book.size(); i++){
        hash_map[phone_book[i]] = 1;
    }
    
    for(int i=0; i<phone_book.size(); i++){
        string phone_number = "";
        for(int j=0; j<phone_book[i].size(); j++){
            phone_number += phone_book[i][j];
            // 각 부분마다 확인하여 접두사인지 아닌지를 체크한다.
            if(hash_map[phone_number] && phone_number != phone_book[i]) return false;
        }
    }
    return true;
}

소감

unorderd_map 이라는 새로운 데이터구조에대하여 배웠다. 내 블로그에 따로 정리해 두었으니 이를 잊지말고 활용해야겠다.

profile
No Pain No Gain

0개의 댓글