[Programmers]-전화번호 목록(해시)
문제
“코딩테스트 고득점 Kit - 해시” 문제이다.
코드
import java.util.HashMap;
class Solution {
public boolean solution(String[] phone_book) {
HashMap<String, Integer> hashMap = new HashMap<>();
for(String data : phone_book) hashMap.put(data, 0);
for(String key : hashMap.keySet()){
for(int i=0;i<key.length()-1;i++){
if(hashMap.containsKey(key.substring(0,i+1))) return false;
}
}
return true;
}
}
코드 설명
처음에는 starsWith로 풀어보려했는데 O(n^2)가 나오는 알고리즘덕에 풀리지 않는다.
어떤번호가 다른번호의 접두어일 경우가 false인데 이것을 역으로 생각한다.
어떤번호를 쪼개어 포함되어있는지 확인하게 한다.
요약
- keySet(), containsKey();