1. 문제 설명
2. 풀이 과정
phone_book을 sort()로 정렬한다.
phone_book의 길이를 1을 빼서 접두사로 처음에 비교할 값을 뺀 길이를 구한다.
for문으로 인덱스를 반복해서 phone_book[i+1]로 비교할 대상 다음 것부터 startswith()으로 phone_book[i]와 앞부분에서부터 비교해 같으면 False를 반환하고, 다르면 True를 반환한다.
3. 코드
def solution(phone_book):
phone_book.sort()
for i in range(len(phone_book)-1):
if phone_book[i+1].startswith(phone_book[i]):
return False
return True
4. 추천 코드
def solution(phone_book):
answer = True
hash_map = {}
for phone_number in phone_book:
hash_map[phone_number] = 1
for phone_number in phone_book:
temp = ""
for number in phone_number:
temp += number
if temp in hash_map and temp != phone_number:
answer = False
return answer
5. 추천 코드의 풀이 과정
#해시를 활용한 코드
hash_map라는 이름의 해시 테이블을 생성하여 전화번호를 저장한다.
각 전화 번호는 해시 테이블의 키로 사용되며, 값은 임의로 1로 설정한다.
각 전화번호의 접두사를 확인하기 위해, 전화번호의 각 숫자를 하나씩 추가하면서 해시 테이블에 해당 접두사가 있는지 확인한다.
현재 확인 중인 전화번호 자체를 비교하지 않도록 temp =! phone_number을 추가한다.
'프로그래머스 > 알고리즘 고득점 Kit' 카테고리의 다른 글
[프로그래머스] [스택/큐] Lv.1 /같은 숫자는 싫어 (파이썬/Python) (0) | 2025.03.29 |
---|---|
[프로그래머스] [해시] Lv.3 /베스트앨범 (파이썬/Python) (0) | 2025.03.28 |
[프로그래머스] [해시] Lv.2 /의상 (파이썬/Python) (0) | 2025.03.27 |
[프로그래머스] [해시] Lv.1 /완주하지 못한 선수(파이썬/Python) (0) | 2025.03.21 |
[프로그래머스] [해시] Lv.1 /폰켓몬 (파이썬/Python) (0) | 2025.03.19 |