문제
https://programmers.co.kr/learn/courses/30/lessons/42577?language=python3
나의 코드
def solution(phone_book):
phone_book=sorted(phone_book)
for i in range(len(phone_book)-1):
if phone_book[i]==phone_book[i+1][:len(phone_book[i])]:
return False
return True
요소들이 문자열로 이루어져있으면 정렬하면 사전처럼 정렬된다.
위 문제처럼 한 번호가 다른 번호의 접두어인 경우 정렬을 한다면 반드시 이웃될 것이라 생각하였다.
이웃되는 요소들끼리 비교하는데 짧은 번호가 긴 번호에 속하며 속할 때 맨 앞부분부터 일치해야 된다.
정렬을 하였기 때문에 접두어가 될 경우 짧은 번호가 앞에 위치에 있을 것이기 때문에 i번째 문자열 길이만큼
i+1번째 문자열을 자르고 같은지 확인하는 식으로 문제를 해결하였다.
알게된 점
1. 리스트 슬라이싱할 때는 범위가 넘어가도 오류가 뜨지 않는다.
2. 오랜만에 sorted를 사용했는데 key를 사용하는 방법을 잊고있어서 정리하게 되었다.
'공부-코딩테스트 > 코테풀이 - 자바, 파이썬' 카테고리의 다른 글
방문 길이 (코딩테스트, 프로그래머스, 파이썬) (0) | 2022.02.20 |
---|---|
H-Index (코딩테스트, 프로그래머스,파이썬) (0) | 2022.02.18 |
위장 (코딩테스트, 프로그래머스) (2) | 2022.02.08 |
수식 최대화 (코딩테스트, 프로그래머스) (0) | 2022.02.07 |
124의 나라 (코딩테스트, 프로그래머스, 파이썬) (0) | 2022.02.04 |
댓글