티스토리 뷰

[문제 링크]

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

import java.util.Arrays;
import java.util.HashSet;

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

        boolean answer = true;
        for (String phoneNumber : phone_book) {
            for (int i = 1; i < phoneNumber.length(); i++) {
                if (set.contains(phoneNumber.substring(0, i))) {
                    answer = false;
                }
            }
        }

        return answer;
    }
}

hashset의 contains는 시간 복잡도가 O(1)로 빠르게 동작함.

 

일단 set을 생성하고 전화번호들을 다 넣어둠.

phone_book에서 요소를 하나씩 꺼내오고, for문을 요소를 앞에서부터 한글자씩 늘려가면서 잘라봄.

그래서 그게 set에 있으면 접두사로 붙은 거니까 false를 리턴해줌.

댓글