[Baekjoon 19598] 전화번호 목록

Updated:

문제

💛Ⅳ [Baekjoon 5052 - 전화번호 목록]

image

문제 풀이 방법

프로그래머스에서 같은 문제를 풀이한 적이 있는데, 프로그래머스에서는 Hash 문제로 분류되어 있었다. 이번에는 정렬 알고리즘으로 접근해보았다.

전화번호 목록에서 한 번호가 다른 번호의 접두어인지를 판별해야 한다. 우선 전화번호 목록을 정렬해야 앞 뒤 번호만 비교하여 비교횟수를 줄일 수 있다. 이때 파이썬에는 startwith 라는 접두어로 시작하는지를 판별하는 함수가 있어서 사용하였다.

풀이 코드

Python

import sys
input = sys.stdin.readline

t = int(input())
for _ in range(t):
    n = int(input())
    numbers = [input().rstrip() for _ in range(n)]
    answer = True
    numbers.sort()
    for i in range(len(numbers) - 1):
        if numbers[i + 1].startswith(numbers[i]):
            answer = False
            break
    if answer:
        print("YES")
    else:
        print("NO")

댓글남기기