최대 1 분 소요

📁 [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을 이용해서 탐색 시간을 줄이면 간단하게 풀 수 있다.
해쉬 함수와 문자열 처리 함수도 쓰이고 감을 잡지 못하면 헷갈릴 것 같아 쉬운 코테에 많이 나올 것 같은 ?
그리고 프로그래머스로 해쉬를 잘 쓰는 법도 공부해야겠따.