개발일지

[JAVA] 전화번호 목록 본문

Algorithm

[JAVA] 전화번호 목록

O'mil 2024. 4. 25. 22:44
728x90

🔗 링크

전화번호 목록

 

📌 문제 설명

  • 전화번호를 담은 배열 phone_book이 매개변수로 주어질 때,
    어떤 번호가 다른 번호의 접두어인 경우가 있으면 false
    그렇지 않으면 true를 return

 

👀 예제

 

 

✏️ 풀이 순서

  • Sort / Loop 정렬
    1. Sort 정렬하기
    2. Loop 돌리기 → 앞번호가 뒷번호의 접두어면 true 리턴
    3. 마지막까지 아니면 false 리턴
  • HashMap
    1. HashMap 생성하기
    2. HashMap에 전화번호 해싱하기
    3. 전체 돌리면서 접두어가 HashMap에 있는지 확인하기

 

💻 코드

1. Sort / Loop 정렬

import java.util.*;

class Solution {
    public boolean solution(String[] phone_book) {
        
        Arrays.sort(phone_book);
        
        for (int i = 0; i < phone_book.length - 1; i++) {
            if (phone_book[i+1].startsWith(phone_book[i])) {
                return false;
            }
        }
        
        return true;
    }
}
  • startsWith(): 특정문자로 시작하는지 확인하여 true/false 반환 (공백도 취급함)
    +) endsWith(): 특정문자로 끝나는지 확인하여 true/false 반환

 

2. HashMap

import java.util.*;

class Solution {
    public boolean solution(String[] phone_book) {
     
        HashMap<String, Integer> map = new HashMap<>();
        
        for (String number: phone_book) {
            map.put(number, 1);
        }
        
        for (int i = 0; i < phone_book.length; i++) {
            for (int j = 0; j < phone_book[i].length(); j++) {
                if (map.containsKey(phone_book[i].substring(0, j))) {
                    return false;
                }
            }
        }
        return true;
    }
}
  • HashMap.containsKey(): HashMap에 인자로 보낸 Key가 있으면 true 반환 / 없으면 false 반환
    +) HashMap.containsValue(): HashMap에 인자로 보낸 Value가 있으면 true 반환 / 없으면 false 반환

 

 


📚 Reference

[JAVA] 자바_startsWith/endsWith (특정 문자로 시작하거나 끝나는지 체크)

[Java] 맵에 키,값 있는지 확인(containsKey,containsValue)

 

728x90

'Algorithm' 카테고리의 다른 글

[JAVA] 스택/큐  (0) 2024.05.01
[JAVA] Iterator entrySet(), keySet(), values()  (0) 2024.04.25
[Java] sort정렬, HashMap / 완주하지 못한 선수  (0) 2024.04.25
[Java] 중복제거 (HashSet) / 폰켓몬  (0) 2024.04.24
Set / HashSet  (0) 2024.04.24
Comments