Algorithm/프로그래머스

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

내영잉 2021. 3. 23. 00:38

문제 설명

class Solution {
    public boolean solution(String[] phone_Book) {
       for(int i=0; i<phone_Book.length-1; i++) {
            for(int j=i+1; j<phone_Book.length; j++) {
                if(phoneBook[i].startsWith(phone_Book[j])) {return false;}
                if(phoneBook[j].startsWith(phone_Book[i])) {return false;}
            }
        }
        return true;
    }
}

다른 사람들 문제풀이를 보니, 이중 for문을 이용하여 비교하는 방식이 많았지만, 효율성 3,4 가 통과하지 못했다

import java.util.Arrays;

class Solution {
    public boolean solution(String[] phone_book) {
        boolean answer = true;
        Arrays.sort(phone_book);
        for (int i = 0; i < phone_book.length - 1; i++) {
            if(phone_book[i + 1].startsWith(phone_book[i])) return false;
        }
        return answer;
    }
}

 

 

Arrays.sort를 이용하면 문자가 정렬 되기 때문에  for문을 한번만 쓸 수 있어 효율성이 높아진다.