호기심 많은 분석가
[프로그래머스] 해시 - 전화번호 목록 (Python) 본문
def solution(phone_book):
answer = True
phone_book.sort()
for i in range(len(phone_book)-1) :
if phone_book[i] == phone_book[i+1][:len(phone_book[i])]:
return False
return answer
우선 sort 문법을 통해 배열을 앞자리 크기 순으로 정렬해준다. 그러면 ["12", "124", "1235"] -> ["12", "1235", "124"]로 정렬된다. 접두어가 되는지 확인하기 위해서는 i+1번째 숫자의 앞부분과 i의 숫자가 일치하는지만 확인해주면 된다.
sort를 통한 앞자리 숫자별 정렬과, i와 i+1번째 항의 비교라는 아이디어를 가지고 있으면 해결할 수 있는 문제였다.
처음에는 in 문법을 사용하여 오류가 떴는데, 중간에 포함되는 경우를 내가 생각하지 못했다.
다른 풀이
def solution(phone_book):
phone_book = sorted(phone_book)
for i in range(len(phone_book)-1) :
if phone_book[i+1].startswith(phone_book[i]) :
return False
return True
위의 코드와 굉장히 흡사하지만 하나 좋은 문법을 알게 되었다. startswith라는 문법인데 이름처럼 접두어인지 확인해주는 문법이다. 알아두면 앞으로도 자주 쓰게 될 것 같아서 가지고 왔다.
'Coding > Coding Test & Algorithm' 카테고리의 다른 글
[프로그래머스] 스택_큐 - 다리를 지나는 트럭 (0) | 2021.06.24 |
---|---|
[프로그래머스] 해시 - 위장 (Python) (2) | 2021.06.24 |
[프로그래머스] 해시 - 완주하지 못한 선수 (Python) (2) | 2021.06.23 |
[백준 11399] ATM (Python) (0) | 2021.06.11 |
[백준 9095] 1, 2, 3 더하기 (Python) (2) | 2021.06.11 |