https://www.acmicpc.net/problem/5052
import sys
input = sys.stdin.readline
def consistency(array):
for i in range(len(array)-1):
compare = array[i][0]
compare_length = array[i][1]
for s in range(i+1, len(array)):
check = True
idx = 0
while idx < compare_length:
if array[s][0][idx] == compare[idx]:
idx += 1
else:
check = False
break
if check:
return False
return True
t = int(input())
for i in range(t):
n = int(input())
ph = []
for s in range(n):
num = input().rstrip('\n')
ph.append((num, len(num)))
ph = sorted(ph, key=lambda x: x[1])
if consistency(ph):
print('YES')
continue
else:
print('NO')
continue
사실 Python3로 돌리니 시간초과가 나온 코드이다,,, 다행히 Pypy3로 돌리니 맞았다고는 뜨지만 여전히 기분히 찜찜하긴 하다.
import sys
input = sys.stdin.readline
t = int(input())
def check():
for i in range(len(a)-1):
if a[i] == a[i+1][0:len(a[i])]:
print('NO')
return
print('YES')
for _ in range(t):
n = int(input())
a = []
for i in range(n):
a.append(input().strip())
a.sort()
check()
문자열을 정렬시키면 사전순으로 배열, 사전 순에 구애받지 않는 경우 길이가 짧은 숫자가 먼저 배열. 따라서 이 문제에서는 배열만 시키면 i, i+1 끼리만 비교해주면 된다.