- 1번: 내가 작성한 풀이
def solution(phone_book):
lengths = set()
pb_dict = dict()
for p in phone_book:
lengths.add(len(p))
phone_book.sort()
for l in lengths:
for p in phone_book:
if l > len(p):
continue
if p[:l] in pb_dict.keys() and p[:l] in pb_dict.values():
return False
pb_dict[p[:l]] = p
return True
- 2번: 1번 성공 후 참고한 풀이
def solution2(phone_book):
phone_book.sort(key=lambda i: len(i))
for i in range(len(phone_book)):
for j in range(i+1, len(phone_book)):
if phone_book[j][:len(phone_book[i])] == phone_book[i]:
return False
return True
- 확인하기!
- 핵심 아이디어는 동일하나, 키값을 저장하냐(1번) 안하냐(2번)의 차이가 있었다.
저장하지 않아도(2번 방식으로도) 잘 통과되었고, 효율성이 몇 배 더 좋았다.
할당이 필요하지 않다면 굳이 하지 말자!
- 슬라이싱을 적극적으로 활용해도 좋을 것 같다!
'> 알고리즘 문제 풀이 > 프로그래머스' 카테고리의 다른 글
lv1-수박수박수박수박수박수? (python, 파이썬) (0) | 2020.10.21 |
---|---|
*lv2-타겟 넘버 (python, 파이썬) (0) | 2020.10.20 |
lv1-문자열 내 마음대로 정렬하기 (python, 파이썬) (0) | 2020.10.19 |
lv1-체육복 (python, 파이썬) (0) | 2020.10.19 |
lv1-완주하지 못한 선수 (0) | 2020.10.18 |
댓글