# JAVA
import java.util.HashMap;
import java.util.Map;
class Solution {
public boolean solution(String[] phone_book) {
boolean answer = true;
HashMap<String, Integer> map = new HashMap<>();
for(int i=0; i<phone_book.length; i++){
map.put(phone_book[i], i);
}
for(int i=0; i<phone_book.length; i++){
for(int j=1; j<phone_book[i].length(); j++){
if(map.containsKey(phone_book[i].substring(0,j))){
answer = false;
return answer;
}
}
}
return answer;
}
}
✔ 해시함수를 이용하는게 포인트
class Solution {
public boolean solution(String[] phone_book) {
for(int i=0; i<phone_book.length; i++){
for(int j=i+1; j<phone_book.length; j++){
if(phone_book[i].startsWith(phone_book[j])){
return false;
}
if(phone_book[j].startsWith(phone_book[i])){
return false;
}
}
}
return true;
}
}
❓ 반복문을 사용해도 정확한 값은 나오지만 효율성이 너무 떨어진다.
728x90