dict를 쓰라는데 고민해봐도 잘 안떠올라서 되는대로 풀었다.
다른 사람 풀이를 보니까 startswith()를 사용해서 비교하기도 했다.
def solution(phone_book):
pb_len = len(phone_book)
phone_book.sort()
for i in range(pb_len):
phone_book[i] = str(phone_book[i])
for i in range(pb_len):
for j in range(i+1, pb_len):
std_num_len = len(phone_book[i])
if std_num_len > len(phone_book[j]):
continue
else:
if phone_book[i] == phone_book[j][:std_num_len]:
return False
return True
dict를 사용한 방법은 value는 아무 값이어도 상관 없는 전화번호를 key로 갖는 dict를 만들고 전화번호부를 돌면서 특정 전화번호를 문자 하나하나 temp에 이어 붙이면서 dict의 key와 일치하는 게 있는지 찾는 것이다. 그리고 temp는 현재의 전화번호와 일치하면 안된다. 접두어를 찾아야하는데 완전 일치하면 접두어가 아니므로.
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
출처 https://programmers.co.kr/learn/courses/30/lessons/42577
'알고리즘 문제' 카테고리의 다른 글
프로그래머스 베스트 앨범 (0) | 2019.08.28 |
---|---|
프로그래머스 위장 (0) | 2019.08.28 |
프로그래머스 완주하지 못한 선수 (0) | 2019.08.27 |
백준 2775번 부녀회장이 될테야 (0) | 2018.11.04 |
백준 1193번 분수찾기 (0) | 2018.11.04 |