강의로 돌아가기
제갈성규

이코드는 왜 안되는건가요?

def solution(phone_book):
phone_book = sorted(phone_book, key = lambda x : len(x))
len_book = len(phone_book)
print(phone_book)
for i in range(len_book) :
for j in range(i+1,len_book) :
print(phone_book[i],phone_book[j])
if phone_book[i] in phone_book[j] :
return False
return True

작성중인 코드―solution.py
1
2
3
4
5
6
7
8
9
10
def solution(phone_book):
    phone_book = sorted(phone_book, key = lambda x : len(x))
    len_book = len(phone_book)
    print(phone_book)
    for i in range(len_book) :
        for j in range(i+1,len_book) :
            print(phone_book[i],phone_book[j])
            if phone_book[i] in phone_book[j] :
                return False
    return True
1 개의 답변
김서진

8번째 줄에서 in 을 쓰시면 접두어가 아니라 중간에 있는 경우에도 해당되기 때문인 것 같습니다.

if phone_book[i] in phone_book[j] : -> 12 in 212 : true 이기 때문(문제는 12가 가장 앞에 있는 케이스만 추출을 원하는 것으로 보여요)

  • 감정한
    제가 했을때는 정확도는 다 통과했는데 효율성에서 에러가 나더라구요. 로직은 위에 코드랑 똑같구요. nested for loop를 쓰지않고 이문제를 풀수있는 다른 방법이있나요? 감정한 2019.02.05 12:57
답변 쓰기
이 입력폼은 마크다운 문법을 지원합니다. 마크다운 가이드 를 참고하세요.