맨 처음에는 하나를 기준으로 잡고 그 나머지를 다 비교를 해야되나 싶었지만,
접두사는 맨 앞을 보는거니까 비교를 할때, 길이가 작은 순서대로 정렬
을 한다면 앞을 기준으로 잡고 그 뒤에 비교를 해도 된다는 말씀!
그래서 직관적으로 짰을 때 효율성 테스트 3,4에서 시간초과가 떴다.
def solution(phone_book):
phone_book.sort(key=lambda x:len(x))
for i in range(len(phone_book)):
tmp=phone_book[i]
for p in phone_book[i+1:]:
if tmp==p[:len(tmp)]:
return False
return True
for문이 2개인 게 효율성에 걸리나 싶어서 for문을 하나로 줄이려던 차에
먼저, 문자열을 정렬
한 다음에 길이가 작은 순으로 정렬
을 한다면 앞이 비슷한 것들끼리 인접해지고 그 다음에 길이가 작은 순으로 정렬하는 거니까 인접한것만 비교하면 된다.
따라서 for문 1개로 줄일 수 있다.
ex.
["119", "97674223", "1195524421"] --정렬--> ["119", "1195524421", "97674223"]
def solution(phone_book):
phone_book.sort(key=lambda x:(x,len(x)))
for i in range(len(phone_book)-1):
tmp=phone_book[i]
if tmp==phone_book[i+1][:len(tmp)]:
return False
return True