import java.util.*;
class Solution {
public boolean solution(String[] phone_book) {
boolean answer = true;
for(int i =0;i<phone_book.length;i++) {
String diff = phone_book[i];
for(int v=0;v<phone_book.length;v++) {
if(diff.length() < phone_book[v].length()
&& phone_book[v].startsWith(diff)) {
return false;
}
}
}
return answer;
}
}
정확성 테스트는 모두 통과인데, 효율성 3,4번째는 시간초과가 난다 그런데 지금 볼 시간이 없음. 이문제도 기필코 해시로 다시 풀어보리라
2차 답안
import java.util.*;
class Solution {
public boolean solution(String[] phone_book) {
boolean answer = true;
Arrays.sort(phone_book);
for(int i =0;i<phone_book.length-1;i++) {
String diff = phone_book[i];
if(phone_book[i+1].startsWith(diff)) {
return false;
}
}
return answer;
}
}
푸는 로직자체는 거이 다른게 없는데 딱하나 있다면 초기에 정렬을 해주느냐에 따라 달라질 수 있다
그럼 무려 for문을 덜 쓸 수 있게 되서 효율성 테스트를 통과할 수 있게 된다