[백준/파이썬] 5052 전화번호 목록

#문제링크

https://www.acmicpc.net/problem/5052

 

5052번: 전화번호 목록

첫째 줄에 테스트 케이스의 개수 t가 주어진다. (1 ≤ t ≤ 50) 각 테스트 케이스의 첫째 줄에는 전화번호의 수 n이 주어진다. (1 ≤ n ≤ 10000) 다음 n개의 줄에는 목록에 포함되어 있는 전화번호가

www.acmicpc.net

#나의풀이

import sys

if __name__=="__main__":
    T = int(sys.stdin.readline())

    for k in range(T):
        N = int(sys.stdin.readline())
        phoneBook = []
        flag = True
        for _ in range(N):
            phoneBook.append(sys.stdin.readline().strip())

        phoneBook.sort()

        for i in range(N-1):
            if phoneBook[i] == phoneBook[i+1][:len(phoneBook[i])]:
                flag = False
                break
        if flag:
            print("YES")
        else:
            print("NO")

#해설

처음에 제대로 읽지 않고 긴급전화가 접두어면 안되는 문제인줄 알았다. 이게 왜 골드4지? 했는데

모든 번호가 다른 번호의 접두어가 되면 안되는 문제였다.

 

간단하게 문자열들을 sort로 정렬해주면 다음 값에 현재 값이 접두어인지만 파악해주면 해결되는 문제였다.