본문 바로가기
코딩테스트 파이썬/파이썬 프로그래머스 2단계

전화번호 목록

by 세용용용용 2023. 7. 14.

처음 나의 코드

def solution(phone_book):
    answer = True
    #접두어 이기에 리스트를 문자길이를 기준으로 정렬
    phone_book.sort(key=len)
    #print(phone_book)
    #2중 for문 돌려서 접두어인 경우를 찾기
    #있으면 False리턴
    for i in range(len(phone_book)-1):
        for j in range(i+1, len(phone_book)):
            if phone_book[i] == phone_book[j][:len(phone_book[i])]:
                return False
    return answer
print(solution(["123","456","789"]))

정답은 맞지만... 효율성 에서 통과를 못함

 

수정 코드

def solution(phone_book):
    answer = True
   
    hash_map = {}
    for i in phone_book:
        hash_map[i] = 1
    #print(hash_map)
   
    #이중 for문을 돌려서 자기 자신이 아닌 접두어가 hash맵에 있으면
    # false를 리턴한다!!!!
    for i in phone_book:
        str = ''
        for j in i:
            str+=j
            if (str in hash_map) and str!=i:
                return False
    return answer
solution(["119", "97674223", "1195524421"])

통과 굳굳

'코딩테스트 파이썬 > 파이썬 프로그래머스 2단계' 카테고리의 다른 글

[3차] 압축  (0) 2023.07.15
k진수에서 소수 개수 구하기  (0) 2023.07.14
타겟 넘버  (0) 2023.07.12
피로도  (0) 2023.07.11
[1차] 뉴스 클러스터링  (1) 2023.07.10