프로그래머스 전화번호 목록 JAVA풀이

안또니오·2022년 5월 12일
0
import java.util.*;
class Solution {
   public boolean solution(String[] phone_book) {
   			
        //정렬을 하고 시작하기 위해 ArrayList를 만들어 정렬한다.
        ArrayList<String> book = new ArrayList<>();
        Collections.addAll(book, phone_book);
        book.sort(Comparator.naturalOrder());
        
        //어떤 번호가, 다른 번호의 접두어라고 한다면 
        //그 번호는 더 길이가 짧은, 앞의 번호로 시작하게 될 것이기 때문에
        //앞에 번호로 시작하는지 확인하고, 그렇다면 false를 return한다.
        for(int i = 1 ; i<book.size();i++){
            book.get(i).startsWith(book.get(i-1))) return false;
        }
        
        return true;
    }
}

사실 해시, Key-Value로 접근하길 원하는 출제 의도와는 다른 풀이가 되었다.
22년 5월 12일 추가.

ArrayList를 쓰지 않고,
Arrays.sort를 쓰면 되기 때문에 아래의 같은 풀이로 쓰면 더 간단히 풀어낼 수 있다.

		String[] phone = phone_book;
        Arrays.sort(phone);
        for(int i = 1 ; i<phone.length;i++){
            if(phone[i].startsWith(phone[i-1])) return false;
        }
        return true;
        

정답입니다.

profile
2020. 11월 공부시작.

0개의 댓글