문제 풀이
def solution(phone_book):
answer = True
# 배열 정렬
phone_book = sorted(phone_book)
# 첫번째 원소를 접두어로 삼아 검사
f = phone_book[0]
for i in phone_book[1:]:
if f in i:
answer = False
break
return answer
이렇게 풀어도 전부 통과가 나오는데, 가만 생각해보면 {"12", "23", "234"} 등의 배열과 같이 첫 번째 원소가 아니라 그 이후의 원소가 접두어가 되는 경우가 생길 수 있다.
해서 다른 사람이 푼 코드를 보았는데
def solution(phoneBook):
phoneBook = sorted(phoneBook)
for p1, p2 in zip(phoneBook, phoneBook[1:]):
if p2.startswith(p1):
return False
return True
startswith이라는 함수를 쓴 코드가 눈에 띄었다. zip(phoneBook, phoneBook[1:]) 부분이([0], [1]) 쌍을 이루어주는 것이 매우 인상적이며, 이를 통해 한 쌍씩 비교하는 것이 상당히 큰 배움이 되었다.
문제 링크
programmers.co.kr/learn/courses/30/lessons/42577?language=python3
코딩테스트 연습 - 전화번호 목록
전화번호부에 적힌 전화번호 중, 한 번호가 다른 번호의 접두어인 경우가 있는지 확인하려 합니다. 전화번호가 다음과 같을 경우, 구조대 전화번호는 영석이의 전화번호의 접두사입니다. 구조
programmers.co.kr
'Python > 프로그래머스' 카테고리의 다른 글
[프로그래머스] [Python] 기능 개발 (0) | 2020.11.23 |
---|---|
[프로그래머스] [Python] 주식가격 (0) | 2020.11.19 |
[프로그래머스] [Python] 베스트앨범 (0) | 2020.11.19 |
[프로그래머스] [Python] 위장 (0) | 2020.11.19 |
[프로그래머스][Python] 완주하지 못한 선수 (0) | 2020.11.18 |