본문 바로가기
JAVA

프로그래머스 자바 전화번호 목록

by Coding_mon 2020. 9. 10.
public static boolean solution(String[] phone_book){

        for (int i = 0; i < phone_book.length; i ++){
            String target = phone_book[i];
            int target_length = target.length();
            
            for (int j = i + 1; j < phone_book.length; j++){

                if (target_length < phone_book[j].length()) {
                    if (target.equals(phone_book[j].substring(0, target_length)) == true) {
                        return false;
                    }
                }

                else if (target_length > phone_book[j].length()){
                    if (phone_book[j].equals(target.substring(0,phone_book[j].length())) == true){
                        return false;
                    }
                }

            }

        }
        return true;
    }

 

문제에서 접두사라고 하였으나 풀어서 보면

앞에 글자를 비교하라는 문제 였다.

 

그래서 배열의 첫번째 문자열을 타겟으로 잡고 길이를 변수로 저장하여

다음 문자열이 더 크면 큰 문자열을 자르고 비교 하고 

타겟의 길이가 더 크면 타겟을 잘라서 비교하는 알고리즘을 사용 하였다.

 

시간복잡도는 o(n^2)로 데이터 양이 늘어나면 최악

댓글