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 |