<aside> 👉🏿 문제 링크

</aside>

문제

<aside> 👉🏿

전화번호 목록이 주어진다. 이때, 이 목록이 일관성이 있는지 없는지를 구하는 프로그램을 작성하시오.

전화번호 목록이 일관성을 유지하려면, 한 번호가 다른 번호의 접두어인 경우가 없어야 한다.

예를 들어, 전화번호 목록이 아래와 같은 경우를 생각해보자

이 경우에 선영이에게 전화를 걸 수 있는 방법이 없다. 전화기를 들고 선영이 번호의 처음 세 자리를 누르는 순간 바로 긴급전화가 걸리기 때문이다. 따라서, 이 목록은 일관성이 없는 목록이다.

</aside>

문제 정리

<aside> 👉🏿 t : 테스트 케이스의 개수

n : 전화번호 목록의 개수

n줄의 전화번호가 주어진다.

전화번호가 주어질 때 중복되는 번호가 있는지 확인하여 NO, YES를 출력한다.

</aside>

접근 방법

<aside> 👉🏿 이 문제는 전화번호들이 주어지면 먼저 리스트화 해주고, 오름차순으로 정렬을 해준 뒤,

리스트를 반복문을 돌면서 중복되는 값이 있는지 확인해주면 될것같다.

</aside>

코드 진행

<aside> 👉🏿 먼저 입력값들을 받아 보고 전화 번호 목록을 리스트화 시켜준 뒤, 정렬해준다.

is_consistence를 지정해 결과값을 반영할 수 있도록 해준다.

</aside>

import sys

def input():
    return sys.stdin.readline().strip()

t = int(input())
for _ in range(t):
    n = int(input())
    li = [str(input()) for _ in range(n)]
    li.sort()
    is_consistence = True

<aside> 👉🏿 위 리스트를 반복문을 돌며 중복되는지 확인해준다.

</aside>

for i in range(len(li) - 1):
        if li[i] == li[i + 1][0:len(li[i])]:
            is_consistence = False

<aside> 👉🏿 마지막으로 출력을 해주도록 한다.

</aside>

print("YES") if is_consistence else print("NO")