알고리즘 문제
[프로그래머스]전화번호 목록 - JAVA
kirinman
2023. 4. 13. 17:14
[문제 링크]
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를 리턴해줌.