문제
programmers.co.kr/learn/courses/30/lessons/42577
코드
1) startswitch()이용
오랜만에 다시 풀어봤는데 효율성 테스트에서 실패가 떴다.
def solution(phone_book):
phone_book.sort(key=lambda x:len(x))
for i in range(len(phone_book)):
for j in range(i+1, len(phone_book)):
if phone_book[j].startswith(phone_book[i]):
return False
return True
2) 길이 비교 구문 추가
위에 코드에서 시간을 줄이기 위해 각 전화번호의 길이를 비교하는 구문을 추가하였다.
문제에서 중복된 전화번호가 없다고 하였으므로, 길이가 같은 전화번호가 있다면 다른 전화번호이므로 비교할 필요 없이 반복문을 끝내면 된다.
def solution(phone_book):
phone_book.sort()
for i in range(len(phone_book)):
for j in range(i+1, len(phone_book)):
if len(phone_book[i]) == len(phone_book[j]):
break
if phone_book[j].startswith(phone_book[i]):
return False
return True
'⏳ 알고리즘 > python 알고리즘 문제 풀이' 카테고리의 다른 글
프로그래머스 - LV3. 2*n 타일링 (0) | 2021.04.29 |
---|---|
프로그래머스 - LV2. 조이스틱 (0) | 2021.04.27 |
알고리즘 - LV3.줄 서는 방법 (0) | 2021.04.27 |
알고리즘 문제 - LV3. 숫자의 표현 (0) | 2021.04.25 |
알고리즘 문제 - LV3. 최고의 집합 (0) | 2021.04.25 |