T = int(input()) def check(arr): for ind in range(len(arr)-1): if arr[ind] == arr[ind+1][:len(arr[ind])]: return 'NO' return 'YES' for _ in range(T): N = int(input()) phone_list = [input() for _ in range(N)] phone_list.sort() print(check(phone_list))
문자열인체로 정렬을 하면, 앞에서부터 숫자가 작은순으로 정렬이 된다.
이 점을 이용해, 앞에서부터 하나씩 그 다음 문자열과 앞에서부터 같은지 확인해주면 된다.
import sys input = sys.stdin.readline T = int(input()) def check(arr): for ind in range(len(arr)-1): if arr[ind+1].startswith(arr[ind]): return 'NO' return 'YES' for _ in range(T): N = int(input()) phone_list = [input().strip() for _ in range(N)] phone_list.sort() print(check(phone_list))
startswith라는 메소드를 활용해서 하는 방법도 있다.
'알고리즘 > 백준' 카테고리의 다른 글
[BOJ/백준] 11066 파일 합치기 (0) | 2021.03.12 |
---|---|
[BOJ/백준] 1300 K번째 수 (0) | 2021.03.11 |
[BOJ/백준] 1963 소수 경로 (0) | 2021.03.11 |
[BOJ/백준] 1504 특정한 최단 경로 (0) | 2021.03.11 |
[BOJ/백준] 15685 드래곤 커브 (0) | 2021.03.08 |