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

2020. 4. 4. 13:22프로그래머스/LEVEL 2

import java.util.*;

class Solution {
    public boolean solution(String[] phone_book) {
        boolean answer = true;
        
        Arrays.sort(phone_book, new Comparator<String>(){
           public int compare(String s1, String s2){
               return s1.length()-s2.length();
           } 
        });
        
        for(int i=0; i<phone_book.length-1; i++){
            for(int j=i+1; j<phone_book.length; j++){
                if(phone_book[j].substring(0,phone_book[i].length())
                  .equals(phone_book[i])){
                    return false;
                }
            }
        }
        return answer;
    }
}​

 

----------------------------------------------------------------------------------------------------------------------------

2020.06.25

 

import java.util.*;

class Solution {
    public boolean solution(String[] phone_book) {
        boolean answer = true;
        
        Arrays.sort(phone_book, new Comparator<String>(){
           public int compare(String s1, String s2){
               return s1.length()-s2.length();
           } 
        });
        
        for(int i=0; i<phone_book.length-1; i++){
            for(int j=i+1; j<phone_book.length; j++){
                if(phone_book[j].substring(0,phone_book[i].length())
                  .equals(phone_book[i])){
                    return false;
                }
            }
        }
        return answer;
    }
}

 

1. 한 전화번호가 다른 전화번호를 접두사로 가지려면 문자열의 길이가 같거나 더 길어야한다.

2. 전화번호부를 전화번호 길이를 기준으로 정렬한다.

3. 전화번호부를 탐색하며 접두사와 같은지를 검사하고 발견되면 바로 false를 리턴해준다. 

4. 모두 탐색했을때 발견되지 않으면 true로 초기화된 answer가 그대로 리턴된다.