본문 바로가기

알고리즘 풀이/프로그래머스

[프로그래머스] 전화번호 목록 - JAVA

🔗 문제 링크

[프로그래머스] 전화번호 목록

 

코딩테스트 연습 - 전화번호 목록

전화번호부에 적힌 전화번호 중, 한 번호가 다른 번호의 접두어인 경우가 있는지 확인하려 합니다. 전화번호가 다음과 같을 경우, 구조대 전화번호는 영석이의 전화번호의 접두사입니다. 구조

programmers.co.kr

 

📝 풀이 과정

전화번호를 set에 모두 넣고, for문을 통해 전화번호를 앞에서부터 잘라 set.contains()를 활용해 set에 있는지 확인했다.

 

만약 set에 존재한다면, 해당 전화번호는 다른 전화번호로 시작하기 때문에 접두어가 있으므로 false를 반환해 주었다. 반복문이 끝날 때까지 return 되지 않았다면, 다른 전화번호가 접두어가 되는 경우가 없기 때문에 true를 반환해 주었다.

 

💻 코드

import java.util.*;

public class Solution {
    public boolean solution(String[] phone_book) {
        Set<String> set = new HashSet<>();
        set.addAll(Arrays.asList(phone_book));

        for (String phone : phone_book)
            for (int i = 1; i < phone.length(); i++) 
                if(set.contains(phone.substring(0, i)))
                    return false;

        return true;
    }
}