[Refresh ! 코딩 테스트 / js] -전화번호 목록

정대만·2025년 1월 16일

업로드중..

문제설명

  • 여기서 "접두어" 에 집중함
  • 그럼 접두어가 같은거를 True 가면되겠네?
  • 이때 제한사항이 1~ 1,000,000이하인걸 무시했음

나의코드

   
    phone_book.sort((a,b)=>{
         if(a.length > b.length) return 1;
         if(a.length === b.length) return 0;
         if(a.length < b.length) return -1;
    })
     for(var i=0; i<phone_book.length; i++){
         for(var z=i+1;z<phone_book.length; z++ ){
             let hey=phone_book[z].slice(0,phone_book[i].length);
             if(hey==phone_book[i]&& hey<phone_book[z]){
                 return false;
             }
         }
     }
     return true;
}
  • 처음에는 sort 을 할때 . 길이로 생각하고 풀었더니 당연히 시간초과가 나와서 남의 코드를 봄

남의코드

function solution(phone_book) {
   
    phone_book.sort()
    
     for(var i=0; i<phone_book.length-1; i++){
       if(phone_book[i+1].substring(0,phone_book[i].length)==phone_book[i])return false;
     }
     return true;
}
  • sort 으로 알파벳 순서로 비교함
  • 정렬후 . 알파벳 순서가 같은거 끼리 묶었으니 이전순서와 나를 비교해서 같으면 true 으로 내놓는 문제였음
profile
안녕하세요

0개의 댓글