해시
소스
java
정확성 테스트 통과, 효율성 테스트 실패 코드
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| import java.util.Arrays; import java.util.Comparator;
class Solution { public boolean solution(String[] phone_book) { boolean answer = true; Arrays.sort(phone_book, Comparator.comparing(String::length)); for (int i = 0; i < phone_book.length; i++) { for (int j = i + 1; j < phone_book.length; j++) { if (phone_book[i].equals(phone_book[j].substring(0, phone_book[i].length()))) { answer = false; break; } } } return answer; } }
|
Hash 사용
해시를 사용해야 효율성 통과를 할 수 있다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| import java.util.HashMap; import java.util.Arrays; import java.util.Collections;
class Solution { public boolean solution(String[] phone_book) { Arrays.sort(phone_book, Collections.reverseOrder()); HashMap<String, Integer> hashMap = new HashMap<>();
for (String s : phone_book) { if (hashMap.get(s) != null) { return false; }
for (int i = 0; i < s.length(); i++) { hashMap.put(s.substring(0, i), 0); } }
return true; } }
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| import java.util.HashMap;
class Solution { public boolean solution(String[] phone_book) { HashMap<String, Integer> hashMap = new HashMap<>(); for (String s : phone_book) hashMap.put(s, 0); for (String s : phone_book) { for (int i = 1; i < s.length(); i++) { if (hashMap.containsKey(s.substring(0, i))) return false; } }
return true; } }
|
kotlin
1 2 3 4 5 6 7 8 9 10 11
| fun solution(phone_book: Array<String>): Boolean { val hashMap = HashMap<String, Int>() phone_book.forEach { hashMap[it] = 0 } phone_book.forEach { for (i in 1 until it.length) { if (hashMap.containsKey(it.substring(0, i))) return false } }
return true }
|
#KotlinAlgorithmProgrammers해시Java