Skip to main content

5052전화번호목록

·98 words·1 min· loading

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')