반응형
def solution(phone_book):
sort_book = sorted(phone_book)
for i in range(len(sort_book)):
b = len(sort_book[i])
for j in sort_book[i+1:]:
if sort_book[i] == j[:b]:
return False
return True
채점 결과
정확성: 83.3
효율성: 8.3
합계: 91.7 / 100.0
요번에도 효율성에서 떨어졌다. (4개중 2개)
답을 배꼈다.
베스트 답안1)
def new_solution(phone_book):
phone_book = sorted(phone_book)
for p1, p2 in zip(phone_book, phone_book[1:]):
if p2.startswith(p1):
return False
return True
phone_book을 sorted하면 문자열로 이루어진 숫자이기때문에 ["119", "1195524421", "97674223"]로 글자 순서대로 정렬이 된다
sorted를 쓴 이유는 startswith를 앞뒤문자열 다 적용 안시켜도 되게(한번만 사용하게) 하는 이유라고한다.
startswith는 처음 보는 메소드인데 아래와 같은 방식으로 사용한다고한다.
예)
check = "test check"
print(check.startswith("test")
결과값
True
p2(검사받을 문자열들)의 값들에 p1(검사할 문자열)을 검사하여 False을 출력하게 하는 방식인거같다.
베스트 답안2)
def new_solution1(phone_book):
for phone in phone_book:
temp = ''
for num in phone:
temp += num
print(temp)
if temp in phone_book and temp != phone:
return False
return True
내꺼랑 조금 비슷하지만 훨씬 간결해보인다.
반응형