티스토리 뷰
문제
전화번호 목록에 있는 원소들 중에서
특정 원소로 시작하는 번호 (접두번호) 가 있는지 확인한다.
만약, 어떤 번호가 다른 번호의 접두 번호인 경우가 있으면 false를 그렇지 않으면 true를 return
제한사항
phone_book의 길이는 1 이상 1,000,000 이하입니다.
각 전화번호의 길이는 1 이상 20 이하입니다.
입출력 예제
phone_book = ["119", "1190223", "5939130"] : False
phone_book = ["123", "456", "789"] : True
phone_book = ["12", "123", "1235", "567", "88"] : False
풀이
def solution(phone_book):
answer = False
data = list(phone_book)
idx = 0
for x in data:
del data[idx]
idx += 1
for y in data[1:]:
if y.startswith(x):
return answer
else :
continue
answer = True
return answer
NOTE
최초 풀이.
애초에 list 자료형으로 입력을 받는데, 그것도 모르고 list를 씌웠다.
그리고 계속 test 8, 9에서 오류가 나온다.
그러다가 모든 원소들을 하나씩 비교할 필요가 없다는 것을 깨달았다.
처음 입력값을 sort해서 가장 짧은 녀석을 탐침으로 사용해 나머지 원소들을 검사하면 되는 것이다.
def solution(phone_book):
phone_book.sort()
answer = False
probe = phone_book[0]
test = phone_book[1:]
for i in test:
if len(probe) != len(i):
if i.startswith(probe):
return answer
answer = True
return answer
@ 문제 출처 : https://programmers.co.kr/learn/courses/30/parts/12077
'프로그래밍 > 프로그래머스' 카테고리의 다른 글
프로그래머스: #스택, 탑 (0) | 2020.01.08 |
---|---|
프로그래머스: #해시, 위장 (0) | 2020.01.07 |
프로그래머스: # 해시, 완주하지 못한 선수 (0) | 2020.01.06 |
댓글