private static boolean solution(String[] phoneBook) {
//1
Arrays.sort(phoneBook);
boolean result = true;
//2
for (int i=0; i<phoneBook.length-1; i++) {
if (phoneBook[i+1].startsWith(phoneBook[i])) {
result = false;
break;
}
}
return result;
}
핵심 point! String 배열을 정렬시키면 어떤 방식으로 나열 되는지 이해한다.
public boolean solution(String[] phone_book) {
boolean answer = true;
HashMap<String, String> hm = new HashMap<>();
// 중복을 제거해서 해시 맵에 모두 저장
for( String input : phone_book ) {
hm.put(input, input);
}
for ( String target : phone_book) {
// target을 분해하며 다른 곳에서 prefix 있는지 찾기
for( int i=0; i< target.length(); i++) {
if ( hm.get(target.substring(0,i)) != null) {
return false;
}
}
}
return answer;
}
다른 관점! input 데이터를 분해해서 input의 prefix를 다른 string에서 찾는다.