기록공간

전화번호 목록 (프로그래머스) 본문

Algorithm/문제

전화번호 목록 (프로그래머스)

입코딩 2020. 5. 11. 12:43
반응형

접두어가 있는지 없는지만 찾으면 되는 문제였다. 

 

우선 phone_book을 순회를 돌며 모든 원소에 대해 비교를 진행한다. 검사가 끝난 원소는 string를 key값으로, string의 사이즈를 value값으로 하는 unordered_map인 d라는 컨테이너에 들어간다. phone_book의 원소는 이 컨테이너 d 안에 있는 원소들과 비교를 한다. 접두어를 찾는 것이므로, 비교하는 값 둘 중 사이즈가 더 작은 값을 기준으로 부분 문자열 비교를 진행한다. 만약 검사하는 부분이 같으면 false를 리턴한다. 

 

코드는 다음과 같다.

#include <string>
#include <cstring>
#include <vector>
#include <unordered_map>

using namespace std;

bool solution(vector<string> phone_book) 
{
    bool answer = true;
    unordered_map<string, int> d; 
    for(const auto pb : phone_book)
    {
        for(const auto i : d)
        {
            int min = i.second < pb.size() ? i.second : pb.size();
            if(!strncmp(pb.c_str(), i.first.c_str(), min))
            {
                answer = false;
                return answer;
            }
        }
        d[pb] = pb.size();
    }
    return answer;
}
반응형

'Algorithm > 문제' 카테고리의 다른 글

베스트앨범 (프로그래머스)  (0) 2020.05.11
위장 (프로그래머스)  (0) 2020.05.11
완주하지 못한 선수(프로그래머스)  (0) 2020.05.08
가장 큰 수(프로그래머스)  (0) 2020.05.05
DNA (백준 - 1969번)  (0) 2020.03.29
Comments