뚜당탕탕

[programmers / python] 해시(Hash) - 전화번호 목록 본문

💯 문제 풀이/프로그래머스

[programmers / python] 해시(Hash) - 전화번호 목록

뚜띠언니 2021. 10. 12. 00:55
def solution(phone_book):
    answer = True
    phone_book = sorted(phone_book)
    for i in range(1, len(phone_book)) :
        if phone_book[i-1] in phone_book[i] :
            answer = False
    
    return answer

정확성: 79.2 (19/20 맞음), 효율성: 16.7 (4/4 맞음)

합계: 95.8 / 100.0

테스트케이스 13번에서만 틀렸다.

질문목록에서 찾아보니, 접두어가 아닌 문장 중간이나 뒷부분에서 포함되는 경우도 생각해야 한다고 한다.

def solution(phone_book):
    answer = True
    phone_book = sorted(phone_book)
    for i in range(1, len(phone_book)) :
        if phone_book[i-1] in phone_book[i] :
            l = len(phone_book[i-1])
            if (phone_book[i-1]) == (phone_book[i][ : l]) :
                answer = False
    
    return answer

조건을 하나 추가했다.

l = len(phone_book[i-1])
if (phone_book[i-1]) == (phone_book[i][ : l]) :
	answer = False

phone_book[i-1] 이 "123" 이고 

phone_book[i] 가 "123456" 이라면

phone_book[i-1] 의 길이만큼, 앞부분 부터 잘랐을 때, 일치하는 경우에만 False 를 반환하도록 했다.

"123456" 에 "123" 이 접두어인지 보기 위해, "123"의 길이 3만큼 앞부분 부터 잘라 비교한다.

 

Comments