Lv2. 전화번호 목록

Hello·2022년 8월 5일

코딩테스트 연습 > 전화번호 목록

1. 풀이 설명

  1. phone_book을 <전화번호: index> 의 dictionary 로 저장한다: dict

  2. dict 를 2중 for문 돌면서 전화번호의 일부가 dict에 있다면 False를 반환한다.

2. 나의 풀이

python

def solution(phone_book):
    dict = {}

    for i in range(len(phone_book)):
        dict[phone_book[i]] = i

    for key, val in dict.items():
        for i in range(1, len(key)):
            if key[0:i] in dict:
                return False
            
    return True

3. 배운점

python

  1. dictionary 에서 key contains 검사하기: key in dict

  2. list 다음 아이템과 비교할 수 있는 방법: zip(arr, arr[1:])

arr = ['12', '123', '1235', '567', '88']
for a, b in zip(arr, arr[1:]):
	print(a, b)
12 123
123 1235
1235 567
567 88
  1. 2번을 활용한 다른 풀이
def solution(phone_book):
    phone_book.sort()
    for a, b in zip(phone_book, phone_book[1:]):
        if b.startswith(a):
            return False
    return True
profile
안녕하세요 :)

0개의 댓글