PROGRAMMERS_Lv2_전화번호 목록
📁 [Lv2_42577] 전화번호 목록
class Solution {
public boolean solution(String[] phone_book) {
boolean answer = true;
// HashMap 선언
// for문으로 다 체크하면 시간초과
Map<String, Integer> map = new HashMap<>();
// map에 넣어주기
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=0; j<phone_book[i].length(); j++){
if(map.containsKey(phone_book[i].substring(0,j)))
return false;
}
}
return answer;
}
}
🤔 나의 생각
이 문제는 일단 접두사에 대한 의미를…
ㅋㅋ 결국 맨앞에만 있으면 되는 것이기 때문에 맨 앞에 값들이 포함되어 있는지만 확인하면 된다.
그리고 HashMap을 이용해서 탐색 시간을 줄이면 간단하게 풀 수 있다.
해쉬 함수와 문자열 처리 함수도 쓰이고 감을 잡지 못하면 헷갈릴 것 같아 쉬운 코테에 많이 나올 것 같은 ?
그리고 프로그래머스로 해쉬를 잘 쓰는 법도 공부해야겠따.