본문 바로가기

Algorithm/Programmers

[프로그래머스_JAVA_알고리즘] 전화번호 목록 #해시

HashSet을 이용해서 문제를 풀어봤습니다.

 

Key 값만 필요하고 Value는 필요없기 때문에 중복없이 데이터를 저장하는 HashSet을 이용했습니다.

import java.util.*;

class Solution {
    public boolean solution(String[] phone_book) {
        boolean answer = true;
        /*
            같은 전화번호가 중복해서 들어있지 않기 때문에
            set을 이용하면 된다.
            대신 set은 순서 없이 저장된다.
            그리고 인덱스로 값을 참조할 수 없다.
        */
        HashSet<String> hashset = new HashSet<>();
        for(String phone: phone_book){
            hashset.add(phone);
        }
        
        for(String phone: phone_book){
            for(int i = 1; i < phone.length(); i++){
                String prefix = phone.substring(0, i);
                if(hashset.contains(prefix))
                    answer = false;
            }
        }
        return answer;
    }
}

 

향상된 for문을 이용해서 phone_book 배열의 전화번호를 문자열로 받아 hashset에 넣습니다.

 

다시 향상된 for문을 이용해서 접두어를 검사합니다.

문자열의 일부분을 추출하는 substring을 이용하고, contains 메서드를 활용해 접두어의 유무를 확인할 수 있습니다.

 

.

.

.

 

문제는 아래에서 확인할 수 있습니다.

https://school.programmers.co.kr/learn/courses/30/lessons/120845

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr