코딩테스트/프로그래머스

[프로그래머스][Level 2][해시] 전화번호 목록

박소민 2022. 7. 18. 17:06
전화번호 목록
 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

  • 다른 사람 풀이(해시 이용)
    • .sort(key=len)
      • 길이순으로 정렬
    • 가장 짧은 길이부터 늘려가면서 길이 만큼 자른 해시값 찾기
    • answer=False , return answer 보다 바로 return False 해버리는게 빠르다
def solution(phoneBook):
    #길이로 정렬
    phoneBook.sort(key=len)
    hash_table={}
    
    #맨 처음 가장 짧은 길이
    min_len=len(phoneBook[0])
    
    for p in phoneBook:
        hash_table[hash(p)]=p
        
        #가장 짧은 길이부터 잘라서 해시 값 찾아가기
        for i in range(min_len,len(p)): #p가 최소길이인 경우는 실행하지 X
            try:
                if hash_table[hash(p[0:i])]: #len(p)-1 까지만 검색
                    return False
            except:
                continue
    return True

 

 

[Python] 특정문자 찾는 함수(find,startswith,endswith)

find find(찾을문자, 찾기시작할위치) >>> s = '가나다라 마바사아 자차카타 파하' >>> s.find('마') 5 >>> s.find('가') 0 >>> s.find('가',5) -1 find는 문자열중에 특정문자를 찾고 위치를 반환해준다, 없을경..

yygs321.tistory.com

def solution(phoneBook):
    phoneBook = sorted(phoneBook)

    for p1, p2 in zip(phoneBook, phoneBook[1:]):
        if p2.startswith(p1):
            return False
    return True