chldkato

백준 5052 전화번호 목록 (파이썬) 본문

백준

백준 5052 전화번호 목록 (파이썬)

chldkato 2020. 2. 27. 16:58

https://www.acmicpc.net/problem/5052

 

5052번: 전화번호 목록

문제 전화번호 목록이 주어진다. 이때, 이 목록이 일관성이 있는지 없는지를 구하는 프로그램을 작성하시오. 전화번호 목록이 일관성을 유지하려면, 한 번호가 다른 번호의 접두어인 경우가 없어야 한다. 예를 들어, 전화번호 목록이 아래와 같은 경우를 생각해보자 긴급전화: 911 상근: 97 625 999 선영: 91 12 54 26 이 경우에 선영이에게 전화를 걸 수 있는 방법이 없다. 전화기를 들고 선영이 번호의 처음 세 자리를 누르는 순간 바로 긴급전화가

www.acmicpc.net

처음에는 check 함수에서 이중 반복문을 써서 모든 수와 비교해야한다고 생각했다

다시 생각해보니 check 함수 전에 정렬을 하기 때문에 앞뒤 숫자만 비교해도 모든 경우를 확인할 수 있다

t = int(input())

def check():
    for i in range(len(a)-1):
        if a[i] == a[i+1][0:len(a[i])]:
            print('NO')
            return
    print('YES')

for _ in range(t):
    n = int(input())
    a = []
    for i in range(n):
        a.append(input().strip())
    a.sort()
    check()

'백준' 카테고리의 다른 글

백준 1976 여행 가자 (파이썬)  (0) 2020.02.28
백준 1717 집합의 표현 (파이썬)  (0) 2020.02.27
백준 2161 카드1 (파이썬)  (0) 2020.02.27
백준 5397 키로거 (파이썬)  (0) 2020.02.27
백준 5532 방학 숙제 (파이썬)  (0) 2020.02.27
Comments