문제
풀이
- 주어진 전화번호를 pb 배열에 넣어 줌.
- pb배열을 오름 차순으로 정렬함.
([911, 97625999, 91125426] -> [911, 91125426, 97625999])
- 정렬된 배열에서 어떤 번호의 접두어가 될 수 있는 단어가 어떤 번호 앞에 오게 됨을 알 수 있음.
- 정렬 후 앞 뒤 단어만 서로 비교해줘도 충분히 답을 찾아낼 수 있음.
코드
import sys
def phone() :
t = int(sys.stdin.readline())
for _ in range(t) :
n = int(sys.stdin.readline())
pb = []
for _ in range(n) :
pb.append(sys.stdin.readline().rstrip())
pb.sort()
for i in range(len(pb)-1) :
if len(pb[i]) < len(pb[i+1]) :
if pb[i+1][:len(pb[i])] == pb[i] :
print('NO')
break
else :
print('YES')
phone()