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 |