코딩테스트 파이썬/파이썬 프로그래머스 2단계
전화번호 목록
세용용용용
2023. 7. 14. 22:39


처음 나의 코드
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"])

통과 굳굳