programmers- lv.2 (전화번호 목록)

이예송·2023년 9월 4일

PS

목록 보기
91/97

문제링크: 전화번호 목록

✍🏻 Information

content
언어python
난이도⭐️⭐️⭐️
풀이시간60분?
제출횟수
인터넷검색유무no




🍒 My Code

def solution(phone_book):
    phone_book.sort()  
    for idx in range(1,len(phone_book)):
        if phone_book[idx-1]==phone_book[idx][:len(phone_book[idx-1])]:
            return False
    return True
	
    #두개 다 시간초과 났음
    """ 
    phone_book.sort(key=len)
    first = []
    for i in phone_book:
        for j in first:
            if len(j)!=len(i) and i[:len(j)]==j:
                return False
        first.append(i)
    return True
    """
    """
    for i in range(len(phone_book)):
        for j in range(i+1,len(phone_book)):
            if phone_book[i]==phone_book[j][:len(phone_book[i])]:
                return False
    return True
    """




💡 What I learned

  • hash로 푼 풀이
def solution(phone_book):
    answer = True
    hash_map = {}
    for phone_number in phone_book:
        hash_map[phone_number] = 1
    for phone_number in phone_book:
        temp = ""
        for number in phone_number:
            temp += number
            if temp in hash_map and temp != phone_number:
                answer = False
    return answer
  • string은 정렬하면 각 자리가 작은수부터 정렬된다는 사실을 이용했다. 그래서 다음 애랑만 비교해줘도 된다.
  • 문자열이 특정 문자열로 시작하는지 확인: startswith()
  • 문자열이 특정 문자열로 끝나는지 확인: endswith()

0개의 댓글