알고리즘/프로그래머스
[Python] 전화번호 목록
dding96
2023. 1. 1. 16:53
https://school.programmers.co.kr/learn/courses/30/lessons/42577
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
- 첫 번째 풀이 (효율성 3, 4에서만 시간초과)
import re
def solution(phone_book):
phone_book = sorted(phone_book, key=lambda x : len(x))
for i in range(len(phone_book)-1):
pattern = re.compile({phone_book[i]})
for j in range(i+1, len(phone_book)):
if pattern.match(phone_book[j]):
return False
return True
두 개의 for문을 돌면서 전부 찾다보니까 시간이 너무 오래걸리는 것 같음
- 다른 풀이
def solution(phoneBook):
phoneBook = sorted(phoneBook)
for p1, p2 in zip(phoneBook, phoneBook[1:]):
if p2.startswith(p1):
return False
return True
zip과 startswith를 이용해서 두개를 동시에 확인하면서 진행하니까 통과함