코딩테스트/프로그래머스

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

의현 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)로 답을 바로 찾을 수 있기 때문에