T = int(input())
def check(arr):
    for ind in range(len(arr)-1):
        if arr[ind] == arr[ind+1][:len(arr[ind])]:
            return 'NO'
    return 'YES'



for _ in range(T):
    N = int(input())
    phone_list = [input() for _ in range(N)]
    phone_list.sort()
    print(check(phone_list))

 

문자열인체로 정렬을 하면, 앞에서부터 숫자가 작은순으로 정렬이 된다. 

 

이 점을 이용해, 앞에서부터 하나씩 그 다음 문자열과 앞에서부터 같은지 확인해주면 된다.

 

import sys

input = sys.stdin.readline

T = int(input())
def check(arr):
    for ind in range(len(arr)-1):
        if arr[ind+1].startswith(arr[ind]):
            return 'NO'
    return 'YES'



for _ in range(T):
    N = int(input())
    phone_list = [input().strip() for _ in range(N)]
    phone_list.sort()
    print(check(phone_list))

startswith라는 메소드를 활용해서 하는 방법도 있다.

'알고리즘 > 백준' 카테고리의 다른 글

[BOJ/백준] 11066 파일 합치기  (0) 2021.03.12
[BOJ/백준] 1300 K번째 수  (0) 2021.03.11
[BOJ/백준] 1963 소수 경로  (0) 2021.03.11
[BOJ/백준] 1504 특정한 최단 경로  (0) 2021.03.11
[BOJ/백준] 15685 드래곤 커브  (0) 2021.03.08

+ Recent posts