#문제링크
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로 정렬해주면 다음 값에 현재 값이 접두어인지만 파악해주면 해결되는 문제였다.