본문 바로가기

코딩테스트

프로그래머스(JAVA) - Hash (전화번호 목록)

문제정리

전화번호를 담은 배열 phone_book이 solution 함수의 매개변수로 주어질 때, 어떤 번호가 다른 번호의 접두어인 경우가 있으면 false를 그렇지 않으면 true를 return

class Solution {
    public boolean solution(String[] phone_book) {
        boolean answer = true;
        Map<String, Integer> map = new HashMap<>();

        for(int i = 0; i < phone_book.length; i++){
            map.put(phone_book[i], i);
        }

        for(int i = 0; i < map.size(); i++){
            for(int j = 0; j < phone_book[i].length(); j++){
                if(map.containsKey(phone_book[i].substring(0, j))){
                    return false;
                }
            }
        }


        return answer;
    }
}

 

phone_book를 hashmap에 값을 넣고, 반복문을 이용해서 폰번호 길이만큼 포함하는지 반환할 수 있도록

 


 

containsKey(key) -> 맵에서 인자로 보낸 키가 있으면 true 없으면 false를 반환

containsValue(value) -> 맵에서 인자로 보낸 값이 있으면 true 없으면 false를 반환

HashSet

  • 중복을 허용하지 않는 데이터 저장소
  • HashMap을 내부적으로 사용하여 데이터를 관리 (값을 HashMap의 key로 저장)
  • 순서 보장 X

HashMap

  • (Key, Value) 형태로 데이터를 저장 / Key는 중복 불가능, Value는 중복 가능

HashSet은 중복된 값을 허용하지 않고 고유한 값들만 저장해야 할 때, 데이터의 존재 여부만 확인하면 될 때 (contains()로 빠른 탐색 가능) / HashMap은 Key-Value 쌍으로 데이터를 저장해야할 때, 특정 Key에 대해 빠르게 Value를 가져와야 할 때 (get(), put())