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;