티스토리 뷰

HashSet(혹은 HashMap)을 이용함.

 

set 의 중복 원소를 허용하지 않는다는 특징(map에서도 마찬가지)

+

Hashing(임의의 값을 고정 길이 데이터로 변환)

을 결합한 자료 구조이다.

 

-> 해싱한 결과값(digest) 를 배열의 위치(index)로 활용

 

 

다른 전화번호가 어떤 전화번호의 "접두어" 인 경우를 확인하는 문제이다.

맨 처음에는 패턴 검색을 통한 연산을 생각하였으나, 

 

 

위와 같이 phone_book 배열의 길이는 최대 1,000,000 이지만 각 전화번호의 길이는 최대 20이므로, 

시간복잡도에 대하여 어림잡아 계산해 보았을 때 String 자료형의 substring 메소드를 이용하여도 충분하다는 결론을 얻을 수 있었다.

 

 

따라서 다음과 같이 코드를 작성하였다.

 

import java.util.HashSet;

//hash
public class Solution {
    public boolean solution(String[] phone_book) {
        boolean answer=true;

        //HashSet
        HashSet<String> set = new HashSet<>();
        for (int i = 0; i < phone_book.length; i++) {
            set.add(phone_book[i]);
        }

        int length;
        for (int i = 0; i < phone_book.length; i++) {
            String s = phone_book[i];
            length = s.length();
            for (int j = 1; j < length; j++) {
                if (set.contains(s.substring(0, j))) {
                    answer=false;
                    return answer;
                }
            }
        }
        return answer;
    }

}

 

 

 

 

 


HashSet & Hashing 에 대하여

자바 [JAVA] - Hash Set (해시 셋) 구현하기 (tistory.com)

 

자바 [JAVA] - Hash Set (해시 셋) 구현하기

자료구조 관련 목록 링크 펼치기 더보기  0. 자바 컬렉션 프레임워크 (Java Collections Framework)  1. 리스트 인터페이스 (List Interface)  2. 어레이리스트 (ArrayList)  3. 단일 연결리스트 (Singly Li..

st-lab.tistory.com

 

 

HashSet

[JAVA] HashSet이란? & 사용법 정리 (tistory.com)

 

[JAVA] HashSet이란? & 사용법 정리

안녕하세요 최근 알고리즘을 공부하면서 자바의 다양한 클래스를 알게되고 있는데요 그 동안 개발을 하면서 많이 알고 있다고 생각했는데 끊임없이 나오네요 ㅠ HashSet 클래스에 대해서 설명해

crazykim2.tistory.com

 

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

[programmers] 소수 찾기  (0) 2021.12.04
[백준 1202] 보석 도둑  (0) 2021.11.30
[programmers] H-Index  (0) 2021.11.24
[백준 15903] 카드 합체 놀이  (0) 2021.11.24
[programmers] Heap - 더 맵게  (0) 2021.11.16
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
글 보관함