Programmers.js - 전화번호 목록

박요셉·2024년 10월 8일

풀이
해시 관련 문제라 해시로 풀어봤음.

function solution(phone_book) {
    var answer = true;
    const phoneMap = phone_book.reduce((map,cur) => map.set(cur,true) ,new Map())
    
    for(let phone of phone_book){
        for(let i = 1; i < phone.length; i++){
            if(phoneMap.has(phone.slice(0,i))) answer = false
            
        }
    }
    
    return answer;
}

다른 사람 풀이
아래 풀이 보고 바로 앞뒤의 값만 검사하는데 이게 왜 되는거지?라는 생각을 했음.
그런데 곰곰히 생각해보니 접두어는 문자열로 정렬을 했을 때 연속으로 정렬되겠구나라는 생각을 하게 되었고 이를 활용한 풀이라는 점에서 정말 대단한 것 같음

function solution(phoneBook) {
    return !phoneBook.sort().some((t,i)=> {
        if(i === phoneBook.length -1) return false;

        return phoneBook[i+1].startsWith(phoneBook[i]);        
    })
}
profile
개발자 지망생

0개의 댓글