[프로그래머스, 42577] 전화번호 목록 (java)
Problem Solving/Programmers

[프로그래머스, 42577] 전화번호 목록 (java)

728x90

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

 

프로그래머스

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

programmers.co.kr

728x90

메모리: 258 MB, 시간: 378.52 ms

사용 알고리즘: 해시

import java.util.*;

class Solution {
    public boolean solution(String[] phone_book) {
        
        // 이전 번호를 담아둠
        Set<String> set = new HashSet<>();
        for(int i = 0; i < phone_book.length; i++)
            set.add(phone_book[i]);
        
        StringBuilder sb;
        for(int i = 0; i < phone_book.length; i++) {
            sb = new StringBuilder();
            
            for(int j = 0; j < phone_book[i].length() - 1; j++) {
                sb.append(phone_book[i].charAt(j)); // i번째 단어의 0 ~ j까지 슬라이싱한 문자열이 담겨 있음
                
                if(set.contains(sb.toString())) { // 다른 번호가 접두어인 경우 false 리턴
                    return false;
                }
            }
        }
        
        return true;
    }
}
728x90