https://school.programmers.co.kr/learn/courses/30/lessons/42577
문제 해결 과정
착안
전화번호 목록에 있는 모든 번호들을 해시 테이블(hash table)에 저장한 다음, 각각의 전화번호들에 대해 앞에서부터 1, 2, $\cdots, $ 전체 글자 만큼의 접두사에 해당하는 전화번호가 해시 테이블에 존재하는지 확인한다.
구현
해시 테이블의 역할을 수행할 컨테이너로 std::unordered_map<string, int> 형식의 컨테이너를 활용하였다.
[스포 주의] 아래 '더보기'를 누르면 코드가 나오니 주의하세요~
더보기
#include <string>
#include <vector>
#include <unordered_map>
using namespace std;
bool solution(vector<string> phone_book)
{
unordered_map<string, int> hashes;
for (const string& s : phone_book)
hashes[s]++;
for (const string& s : phone_book)
for (int i = 0; i < s.size(); i++)
if (hashes[s.substr(0, i)])
return false;
return true;
}
실행 결과
'C++ 코딩 문제 풀이 > 프로그래머스' 카테고리의 다른 글
[Programmers] 타겟 넘버 (1) | 2024.01.07 |
---|---|
[Programmers] [1차] 뉴스 클러스터링 (0) | 2024.01.06 |
[Programmers] 기능개발 (0) | 2024.01.05 |
[Programmers] 의상 (0) | 2024.01.02 |
[Programmers] 행렬의 곱셈 (0) | 2024.01.02 |
댓글