문제
내가 작성한 오답
: 효율성 테스트 실패

class Solution {
public boolean solution(String[] phone_book) {
for(int i=0; i< phone_book.length; i++){
for(int k=i+1; k<phone_book.length; k++){
if(phone_book[k].startsWith(phone_book[i])
|| phone_book[i].startsWith(phone_book[k])) return false;
}
}
return true;
}
}import java.util.*;
class Solution {
public boolean solution(String[] phone_book) {
Arrays.sort(phone_book);
for(int i=0; i<phone_book.length-1; i++){
if(phone_book[i+1].startsWith(phone_book[i])) return false;
}
return true;
}
}내가 작성한 정답
// 간신히 통과
채점 결과
정확성: 83.3
효율성: 16.7
합계: 100.0 / 100.0
import java.util.*;
class Solution {
public boolean solution(String[] phone_book) {
Arrays.sort(phone_book);
for(int i=0; i<phone_book.length-1; i++){
if(phone_book[i+1].startsWith(phone_book[i])) return false;
}
return true;
}
}다른 사람들의 정답
import java.util.*;
class Solution {
public boolean solution(String[] phone_book) {
Set<String> set = new HashSet<>();
set.addAll(Arrays.asList(phone_book));
for (String number : phone_book) {
String prefix = "";
for (int i = 0; i < number.length() - 1; i++) {
prefix += number.charAt(i);
if (set.contains(prefix))
return false;
}
}
return true;
}
}
class Solution {
public boolean solution(String[] phoneBook) {
for(int i=0; i<phoneBook.length-1; i++) {
for(int j=i+1; j<phoneBook.length; j++) {
if(phoneBook[i].startsWith(phoneBook[j])) {return false;}
if(phoneBook[j].startsWith(phoneBook[i])) {return false;}
}
}
return true;
}
}
import java.util.Arrays;
import java.util.Collections;
import java.util.Set;
import java.util.stream.Collectors;
class Solution {
public boolean solution(String[] phone_book) {
String text = String.format(" %s", String.join(" ", phone_book));
return !Arrays.stream(phone_book)
.anyMatch(s -> text.split(String.format(" %s", s)).length > 2);
}
}Share article