https://www.acmicpc.net/problem/5052
5052번: 전화번호 목록첫째 줄에 테스트 케이스의 개수 t가 주어진다. (1 ≤ t ≤ 50) 각 테스트 케이스의 첫째 줄에는 전화번호의 수 n이 주어진다. (1 ≤ n ≤ 10000) 다음 n개의 줄에는 목록에 포함되어 있는 전화번호가www.acmicpc.net
하나하나비교하는방법밖에 안나서 인터넷을 찾아봤는데
정말 간단했다.
문자열을 입력받고 정렬하면,
인접한 두 문자는 가장 가까운 문자일 것이다.
따라서 arr[i]와 arr[i+1]만 비교하면 된다. 신기하다.
그냥비교해줘도 되고, 좀더 빠르게 하려면
startswith()함수를 통해서 비교해주면 끝
import sysinput =sys.stdin.readlinet=int(input())for _ in range(t):
n=int(input())
arr=sorted([input().rstrip() for _ in range(n)]) #정렬하면 바로 옆만 비교하면 됨!
flag=False for i in range(n-1): if arr[i+1].startswith(arr[i]):
flag=True break print('NO' if flag else 'YES')