
풀이
해시 관련 문제라 해시로 풀어봤음.
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]);
})
}