소스 코드
def solution(phone_book):
# 정렬
phone_book.sort()
idx = 0
answer = True
while True:
word = phone_book[idx]
word_l = len(word)
# ['22','1','13','12']를 정렬하면
# ['1','12','13','22']가 됨
# 즉, 순서대로 정렬이 됨 == 바로 뒤(index+1)만 확인하면 됨
if word == phone_book[idx+1][0:word_l]:
answer = False
break
idx += 1
if answer == False or idx == len(phone_book)-1:
break
return answer
해결 방법
1. 정렬을 하면, string도 순서대로 정렬 됨
(Askii의 크기를 기준으로 비교 되기 때문)
2. 즉, 바로 다음 인자만 확인해도 됨
(만일 접두어가 중복되면 answer는 False가 되고, 중복되지 않으면 그 다음 인자에서도 중복될 수 없기 때문)
느낀 점
정렬이 되는 과정을 이해하는 것이 필요할듯...
ps. 개인적인 코드와 코드를 작성의 이유를 적은 것입니다.
오류나 적절치 않은 문법이 존재할 수 있으며, 다른 분들께는 굉장히 비효율적인 방법으로 여겨질 수 있습니다.
혹시 개선 사항, 오류 및 문제에 대한 수정 사항 등을 댓글로 남겨주신다면 감사한 마음으로 배우고 수정하겠습니다.
'코딩 문제해결 > 문제풀이.프로그래머스' 카테고리의 다른 글
[프로그래머스 코딩] 프린터 - PYTHON (0) | 2021.09.04 |
---|---|
[프로그래머스 코딩] 조이스틱 - PYTHON (0) | 2021.09.03 |
[프로그래머스 코딩] 124 나라의 숫자 - PYTHON (0) | 2021.09.01 |
[프로그래머스 코딩] 스킬트리 - PYTHON (0) | 2021.08.31 |
[프로그래머스 코딩] 모음 사전 - PYTHON (0) | 2021.08.30 |