코딩테스트

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

murlocdev 2026. 7. 22. 15:40

https://school.programmers.co.kr/learn/courses/30/lessons/42577

 

프로그래머스

SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

 

처음엔 vector<string>을 sort하여 i와 i+1을 비교하는 방식으로 접근하려고 했는데

해시 문제인데 해시를 사용하지 않는 풀이방식이라 다시 생각해보았다

unordered_set으로 찾을 string 목록을 저장하고

각 단어마다 1부터 길이까지 substr하여 접두어 prefix가 있는지 find해서 해결했다

j < phone_book[i].size() 이므로 중복된 값을 찾는 일을 방지할 수 있다

더보기
#include <string>
#include <vector>
#include <unordered_set>

using namespace std;

bool solution(vector<string> phone_book) {
    bool answer = true;

    unordered_set<string> usPhone;

    for (int i = 0; i < phone_book.size(); ++i)
    {
        usPhone.insert(phone_book[i]);
    }

    for (int i = 0; i < phone_book.size(); ++i)
    {
        for (int j = 1; j < phone_book[i].size(); ++j)
        {
            string prefix = phone_book[i].substr(0, j);

            if (usPhone.find(prefix) != usPhone.end())
            {
                answer = false;
                return answer;
            }
        }
    }

    return answer;
}

 

'코딩테스트' 카테고리의 다른 글

프로그래머스 / 베스트앨범  (0) 2026.07.29
프로그래머스 / 의상  (0) 2026.07.26
프로그래머스 / 완주하지 못한 선수  (0) 2026.07.20
프로그래머스 / 폰켓몬  (0) 2026.07.20
프로그래머스 / 네트워크  (0) 2026.06.10