728x90
<문제 링크>
https://programmers.co.kr/learn/courses/30/lessons/42577
<문제 풀이>
- 한 번호가 다른 번호의 접두어인 경우를 확인하면 되므로 정렬시켜서 바로 앞, 뒤만 비교
<코드>
#1차시도 - 테스트 13 실패, 효율성 1,2,3,4 실패
def solution(phone_book):
answer = True
dic = dict()
for idx,i in enumerate(sorted(phone_book)):
dic[i] = idx
for i in range(len(dic)):
if i+1 == len(dic):
break
if list(dic.keys())[i] in list(dic.keys())[i+1]:
answer = False
return answer
#접두어만 검색하도록 고침
#False 다음 break
#2차시도 - 효율성 3,4 실패
def solution(phone_book):
answer = True
dic = dict()
for idx,i in enumerate(sorted(phone_book)):
dic[i] = idx
for i in range(len(dic)):
if i+1 == len(dic):
break
if list(dic.keys())[i] in list(dic.keys())[i+1][:len(list(dic.keys())[i])]:
answer = False
break
return answer
#3차시도 - 해시 제거
def solution(phone_book):
answer = True
phone_book.sort()
for i in range(len(phone_book)):
if i+1 == len(phone_book):
break
if phone_book[i] in phone_book[i+1][:len(phone_book[i])]:
answer = False
break
return answer
<고쳐야 할 점>
- A.startswith("B") → B가 A에 있으면 True. 기억하기
'두두의 알고리즘 > 문제' 카테고리의 다른 글
[재귀함수] 백준 10872번 '팩토리얼' (Python) (0) | 2021.11.23 |
---|---|
[재귀함수] 백준 10829번 '이진수 변환' (Python) (0) | 2021.11.23 |
[해시] 프로그래머스 L1 '완주하지 못한 선수' (Python) (0) | 2021.11.23 |
[해시] 백준 15829번 'Hashing' (Python) (0) | 2021.11.23 |
[진법변환] 프로그래머스 L1 '비밀지도' (Python) (0) | 2021.11.23 |