[해시] 프로그래머스 -전화번호 목록

2022. 4. 6. 21:46Algorithm

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의 길이가 다를 경우 긴 배열의 나머지 원소는 버려짐.