def solution(phone_book):
phone_book.sort()
for prev_num, next_num in zip(phone_book, phone_book[1:]):
if next_num.startswith(prev_num):
return False
return True
phone_book = ["119", "97674223", "1195524421"]
>> Flase
'phone_book'을 사전순으로 정렬한다. 이렇게 하면 번호들이 순서대로 정렬되어 있게 된다.
zip() 함수를 사용하여 현재 번호와 그 다음 번호를 하나씩 묶어 순회한다. 이때 'phone_book[1:]'은 'phone_book'의 두 번째 번호부터 끝까지의 부분 리스트를 나타낸다.
각각의 묶음 (prev_num, next_num)에 대해 'next_num'이 'prev_num'의 접두사인지 확인한다. startswith() 함수를 사용하여 'next_num'이 'prev_num'으로 시작하는지 검사한다.
만약 'next_num'이 'prev_num'의 접두사인 경우, 즉 접두사가 중복되는 번호가 존재하는 경우, 'False'를 반환한다. 중복된 접두사가 발견되면 전화번호부가 일관성이 없다고 판단한다.
모든 묶음에 대해 접두사 중복을 확인한 후에도 'False'가 반환되지 않았다면, 전화번호부에 중복된 접두사가 없는 경우이므로 'True'를 반환한다.
startwith()
startswith() 함수는 주어진 문자열이 특정 접두사로 시작하는지를 확인하는 역할을 한다.
string = "Hello, world!"
result = string.startswith("Hello")
print(result) # True
result = string.startswith("Hi")
print(result) # False