전화번호 목록이 주어진다. 이때, 이 목록이 일관성이 있는지 없는지를 구하는 프로그램을 작성하시오.
전화번호 목록이 일관성을 유지하려면, 한 번호가 다른 번호의 접두어인 경우가 없어야 한다.
예를 들어, 전화번호 목록이 아래와 같은 경우를 생각해보자
긴급전화: 911
상근: 97 625 999
선영: 91 12 54 26
이 경우에 선영이에게 전화를 걸 수 있는 방법이 없다. 전화기를 들고 선영이 번호의 처음 세 자리를 누르는 순간 바로 긴급전화가 걸리기 때문이다. 따라서, 이 목록은 일관성이 없는 목록이다.
출처 : https://www.acmicpc.net/problem/5052
- mine (문법 오류❗)
- 전화번호를 오름차순으로 정렬하면 i와 i+1만 비교하면 된다.
- 포함 여부를 확인할 때 문법적인 오류때문에 실패했다.
- clone
- NO가 나오면 break
- arr[i+1]:len(arr[i])]
출처 : https://jinho-study.tistory.com/311
mine
import sys input = sys.stdin.readline t = int(input()) for _ in range(t): n = int(input()) arr = [] tag = True for __ in range(n): arr.append(input()) arr.sort() for i in range(n-1): if arr[i] in arr[i+1]: print('NO') tag = False if tag: print('YES')
clone
import sys t = int(sys.stdin.readline()) endFlag = False for _ in range(t): n = int(sys.stdin.readline()) numberList = list(sys.stdin.readline().rstrip() for _ in range(n)) numberList.sort() for i in range(len(numberList)-1): if numberList[i] in numberList[i+1][:len(numberList[i])]: print("NO") endFlag = True break if endFlag == False: print("YES") endFlag = False