Algorithm/Problems_Solving
프로그래머스(Programmers) LEVEL2 - 전화번호 목록
yunajoe
2022. 10. 3. 10:58
# 1st
def solution(phone_book):
answer = True
phone_book.sort(key=lambda x: len(x))
prefix = phone_book[0]
# 이렇게 하면 안되는 이유가 만약에 prefix가 두번째 원소에는 해당되지 않고, 세번째 원소에 해당 되는 것이 있으면, 그래도 없는거로 해당이 되서 return이 끝난당
for ele in range(1,len(phone_book)):
if prefix in phone_book[ele]:
return False
return True
# return True의 위치만 for문을 다 끝내고 실행이 되도록 하자
def solution(phone_book):
answer = True
phone_book.sort(key=lambda x: len(x))
prefix = phone_book[0]
for ele in range(1,len(phone_book)):
if prefix in phone_book[ele]:
return False
return True
정확성: 58.3
효율성: 12.5
합계: 70.8 / 100.0
# 2nd
def solution(phone_book):
answer = True
phone_book.sort(key=lambda x: len(x))
prefix = phone_book[0]
for ele in range(len(phone_book)):
if ele == 0:
continue
elif prefix in phone_book[ele]:
return False
return True
정확성: 58.3
효율성: 12.5
합계: 70.8 / 100.0
# 3rd
# phone_book = ["934793", "34", "44", "9347"] 경우일때도 고려해서? (즉, 접수사로 지정한 것이 문자열의 앞에 아닌 중간에 있을수도 있어서)
def solution(phone_book):
answer = True
phone_book.sort(key=lambda x: len(x))
prefix = phone_book[0]
prefix_num = len(prefix)
for ele in range(len(phone_book)):
if ele == 0:
continue
elif prefix in phone_book[ele][:prefix_num]:
return False
return True
정확성: 70.8
효율성: 12.5
합계: 83.3 / 100.0
# 4th (using hashmap)
def solution(phone_book):
hash_map = {}
answer = True
for phone_number in phone_book:
hash_map[phone_number] = 1 # {"119":1,"97674223":1,"1195524421":1}
for phone_number in phone_book:
prefix = ""
for number in phone_number:
prefix += number
if prefix in hash_map and prefix != phone_number: # 자기와 똑같은 것은 제외
answer = False
return answer