[알고리즘문제풀기] 전화번호 목록

silver's avatar
Jan 29, 2026
[알고리즘문제풀기] 전화번호 목록

문제

내가 작성한 오답

: 효율성 테스트 실패
notion image
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

silver