Algorithm/1일 1코테
[💕 프로그래머스 Python] 전화번호 목록
대인보우
2020. 10. 21. 13:41
반응형
프로그래머스 연습문제 2단계
<< 전화번호 목록>>
- python3
문제 설명
programmers.co.kr/learn/courses/30/lessons/42577
코딩테스트 연습 - 전화번호 목록
전화번호부에 적힌 전화번호 중, 한 번호가 다른 번호의 접두어인 경우가 있는지 확인하려 합니다. 전화번호가 다음과 같을 경우, 구조대 전화번호는 영석이의 전화번호의 접두사입니다. 구조��
programmers.co.kr
나의 풀이
# 채점결과 84.6 / 100.0
def solution(phone_book):
for i in range(0,len(phone_book)-1):
len_i = len(phone_book[i])
for j in range(i+1, len(phone_book)):
if phone_book[i] in phone_book[j][:len_i]:
return False
return True
# 통과
def solution(phone_book):
for i in phone_book: # 폰북에서 하나씩 출력
for j in range(len(phone_book)): # 0부터 시작해서
if i == phone_book[j]: # 같으면 pass하고
continue
elif i == phone_book[j][:len(i)]: # 접두사면
return False # False
return True # 아니면 True
다른사람 풀이
def solution(phoneBook):
phoneBook = sorted(phoneBook) # 정렬
for p1, p2 in zip(phoneBook, phoneBook[1:]):
if p2.startswith(p1): # p2의 시작하는 문자가 p1이면
return False # False
return True
def solution(phone_book):
answer = True
hash_map = {}
for phone_number in phone_book:
hash_map[phone_number] = 1 # phone number를 딕셔너리 형태로 구현
for phone_number in phone_book:
temp = ""
for number in phone_number: # 한글자씩 출력
temp += number # 하나씩 더해줘서
if temp in hash_map and temp != phone_number: # temp가 hasmap 안에 있으면서 phone_number(본인)은 아닐때 출력
answer = False
return answer
해쉬를 이용해서 푸는 문젠데 그냥 내맘대로 풂... 앞으론 어떤 방식으로 풀어야되는지 고민해보고 풀 것!
반응형