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

2025. 5. 12. 13:24·Algorithm/Coding Test Records

문제 소개

오늘 풀었던 프로그래머스 - 전화번호 목록 문제를 정리합니다.

이 문제는 주어진 전화번호 목록 중 어떤 번호가 다른 번호의 접두어(prefix)인 경우가 있는지를 확인하는 문제입니다.
접두어 관계가 존재하면 false, 존재하지 않으면 true를 반환합니다.

문제 링크: 전화번호 목록 - 프로그래머스


문제 접근 방식

이 문제는 다음과 같은 방식으로 접근했습니다:

  1. 전화번호를 사전 순 정렬하면,
    접두어인 경우는 반드시 인접한 위치에 나옴
  2. 따라서 인접한 두 번호만 비교해서
    앞 번호가 뒷 번호의 접두어인지 확인하면 충분

해결 과정 및 코드

핵심 아이디어

  1. 정렬 후 → phone_book[i+1].startsWith(phone_book[i]) 만 확인
  2. startsWith()는 문자열 접두어 비교를 빠르게 수행
  3. 첫 접두어 발견 즉시 false 반환

코드

시간 복잡도 : O(N log N) (정렬 : O(NlogN) + 인접비교 : O(N))

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;
    }
}

'Algorithm > Coding Test Records' 카테고리의 다른 글

[프로그래머스] 베스트앨범 (Hash)  (1) 2025.05.14
[프로그래머스] 의상 (Hash)  (0) 2025.05.13
[프로그래머스] 폰켓몬 (Hash)  (0) 2025.05.11
[프로그래머스] 이중우선순위큐 (Heap)  (0) 2025.05.10
[프로그래머스] 디스크 컨트롤러 (Heap)  (0) 2025.05.09
'Algorithm/Coding Test Records' 카테고리의 다른 글
  • [프로그래머스] 베스트앨범 (Hash)
  • [프로그래머스] 의상 (Hash)
  • [프로그래머스] 폰켓몬 (Hash)
  • [프로그래머스] 이중우선순위큐 (Heap)
Celion
Celion
오늘도 평소처럼 화이팅!
  • Celion
    Orion Log
    Celion
  • 전체
    오늘
    어제
    • 전체 글 (144)
      • Uncompiled Thoughts (8)
        • 네이버 부스트캠프 10기 (5)
      • CS 기초부터 한 걸음씩 (34)
      • Code Odyssey (22)
      • Algorithm (77)
        • Coding Test Records (63)
      • Git (3)
      • reference (0)
  • 블로그 메뉴

    • 태그
    • 방명록
  • 태그

    코테
    java
    백준
    Level2
    알고리즘고득점kit
    boostcamp
    Level3
    시뮬레이션
    greedy
    프로그래머스
    Kotlin
    문법정리
  • 최근 글

  • 인기 글

  • 최근 댓글

  • hELLO· Designed By정상우.v4.10.4
Celion
[프로그래머스] 전화번호 목록 (Hash)
상단으로

티스토리툴바