함량 100%

함지의 개발일기

알고리즘/해시

[프로그래머스/해시] 전화번호 목록(Java, 자바)

Haamjee 2023. 2. 4. 21:58

 

 

https://school.programmers.co.kr/learn/courses/30/lessons/42577?language=java 

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

 

처음에는 loop를 생각했는데 주제가 해시다보니 해시로 풀었다. 실전에서는 이렇게 문제 유형이 나오지 않을텐데 걱정이다 ㅠ

HashSet을 사용해도 되나 사용하지 않은 이유는 HashMap에 비해 느리다는 단점이다. 

 

간단히 HashSet과 HashMap 의 차이점을 짚고넘어가자.

- HashSet : 순서의 의미를 두지 않으며 데이터의 중복이 없다. 오직 객체만 저장가능하다. 

- HashMap : key-value 쌍 형대로 데이터를 저장한다. key 값은 중복값을 허용하지 않지만 value 값은 중복값을 허용한다.

 

import java.util.HashMap;
import java.util.Map;

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 < phone_book.length; i++) {
            for (int j = 0; j < phone_book[i].length(); j++) {
                if (map.containsKey(phone_book[i].substring(0, j)))
                    answer = false;
            }
        }

        return answer;
    }
}

 

 

'알고리즘 > 해시' 카테고리의 다른 글

[프로그래머스/해시] 폰켓몬(Java, 자바)  (0) 2023.02.04