<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")