[해시] 프로그래머스 -전화번호 목록
2022. 4. 6. 21:46ㆍAlgorithm
https://programmers.co.kr/learn/courses/30/lessons/42577
def solution(phone_book):
answer = True
phone_book.sort()
for i in range(len(phone_book)-1):
l = len(phone_book[i])
if phone_book[i] == phone_book[i+1][:l]:
answer = False
return answer
- 전화번호부를 정렬해준다.
** 문자열 정렬은 가장 앞의 문자의 유니코드를 기준으로 정렬한다.
(만약 가장 앞 문자가 같은 것이 여러개라면 그 다음 문자)
(참고: https://skeo131.tistory.com/48)
따라서 정렬을 해주면 접두어가 있을 경우, 해당 문자열(접두어) 바로 다음 순서의 문자열이 접두어를 가진 문자열이게 된다.
➕ 다른 사람 풀이:
def solution(phoneBook):
phoneBook.sort()
for p1, p2 in zip(phoneBook, phoneBook[1:]):
if p2.startswith(p1):
return False
return True
- zip 내장함수 활용
- 문자열.startswith(문자열/문자) (=> True / False 반환)
** zip(a, b) 함수 :
인자로 받은 a, b 배열의 인덱스마다의 각 원소를 튜플로 묶어준다.
단, a, b의 길이가 다를 경우 긴 배열의 나머지 원소는 버려짐.
'Algorithm' 카테고리의 다른 글
[해시][정렬] 프로그래머스 - 베스트앨범 문제 - 파이썬 python (4) | 2022.04.09 |
---|---|
[해시] 프로그래머스 위장 문제 파이썬(python) (0) | 2022.04.09 |
[해시] 프로그래머스 '완주하지 못한 선수' (0) | 2022.04.06 |
[JAVA] 단순연결리스트의 구현 - 학생부 입력 예제 (5) | 2022.04.05 |
[BOJ][이진탐색] 백준 2805 파이썬 (0) | 2022.04.02 |