[프로그래머스 python] 해시 - 전화번호 목록
프로그래머스 해시 전화번호 목록 풀이
https://programmers.co.kr/learn/courses/30/lessons/42577
문제는 해당 링크 들어가면 확인 가능
효율성 문제를 해결하려면 이중 for문을 사용하지 않고 풀어야했기때문에
for문 한개로 풀 수 있는 방법을 생각했다.
phone_book의 number들을 값 순서로 정렬
하고 -> 길이 순
으로 정렬했다.
간단하게 sorted(), 혹은 sort()
함수를 쓰면 오름차순, 길이순으로 정렬된다.
그리고 phone_number[i] 와 phone_number[i + 1]를 비교하면된다.
ex. 입출력 예제에서
1번 ["119", "97674223", "1195524421"]
을 정렬하면 ["119", "1195524421", "97674223"]
이 된다.
풀이
def solution(phone_book):
answer = True
num = sorted(phone_book)
for i in range(len(phone_book) - 1):
if num[i] == num[i + 1][:len(num[i])]:
answer = False
return answer
📌 주의사항 처음에 if num[i] in num[i + 1] 로 확인했는데
테케 한개가 통과되지 않아서 고민했는데,,
생각해보니 in은 전체를 비교대상으로 삼기 때문에, in을 사용하지 않고 접두사만 확인할 수 있는 방법을 사용해야한다.
num[i]만큼 num[i+1]에서 문자열 슬라이싱으로 확인해주면 된다.
다른 사람의 풀이 보고 띵 ~ 머리맞음
def solution(phoneBook):
phoneBook = sorted(phoneBook)
for p1, p2 in zip(phoneBook, phoneBook[1:]):
if p2.startswith(p1):
return False
return True
zip함수를 이용, startwith이라는 메소드를 사용했다. 기억해야지
Author And Source
이 문제에 관하여([프로그래머스 python] 해시 - 전화번호 목록), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@modsiw/프로그래머스-python-해시-전화번호-목록저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)