코딩테스트/프로그래머스
프로그래머스 전화번호 목록
의현
2025. 6. 4. 14:17
링크 : https://school.programmers.co.kr/learn/courses/30/lessons/42577?language=javascript
문제 풀이
해시를 사용하여 문제를 풀이
전화번호 목록에서 각 전화번호에서 가능한 접두어를 dict 변수에 저장(set자료구조)
dict에 저장된 접두어에 해당하는 번호가 phone_book에 있을 경우 false리턴하도록 마지막 for문을 통해 검사
function solution(phone_book) {
var answer = true;
// 가능한 접두어 구하기
let dict = new Set([]);
for (let phone_num of phone_book) {
let num = phone_num.split('');
let tmp = '';
for (let i = 0; i < num.length - 1; i++) {
tmp += num[i];
dict.add(tmp);
}
}
for (let phone_num of phone_book) {
if (dict.has(phone_num)) {
answer = false;
break;
}
}
return answer;
}
결론
hash를 이용하여 푼 이유는
최종으로 접두어 검사를 할 때 Set자료구조의 has 메서드를 이용하면 O(1)로 답을 바로 찾을 수 있기 때문에