
문제의 유형이 '해시'여서 해시로 key를 이용해 value를 찾는 건가? 생각했는데 sort한 후 startsWith를 사용해 풀어도 좋겠다고 생각해서 풀어보았다
처음에는 이중 for문을 써서, i는 0부터, j는 length-1부터 역순으로 돌며 확인했는데 효율성 테스트를 통과하지 못해 다른 방법을 찾아야 했다.
그리고, 답은 자바의 "sort"에 있었다.
{"1", "119", "1533", "11"} 정렬시 {"1", "11", "119", "1533"}으로, 그 옆에 붙은 수하고만 비교를 하면 되었다...!
그래서 찾은 정답
import java.util.*;
class Solution {
public boolean solution(String[] phone_book) {
int len = phone_book.length;
Arrays.sort(phone_book);
for(int i = 0; i < len-1; i++) {
if(phone_book[i+1].startsWith(phone_book[i])) {
return false;
}
}
return true;
}
}