본문 바로가기

백준 풀이

백준 5052 - 전화번호 목록 (Python)

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

 

5052번: 전화번호 목록

첫째 줄에 테스트 케이스의 개수 t가 주어진다. (1 ≤ t ≤ 50) 각 테스트 케이스의 첫째 줄에는 전화번호의 수 n이 주어진다. (1 ≤ n ≤ 10000) 다음 n개의 줄에는 목록에 포함되어 있는 전화번호가

www.acmicpc.net

 

파이썬의 리스트에 전화번호를 String 형태로 append해주고 sort를 하면 길이가 짧은 순서대로 정렬이 됩니다. (예: [123, 12345, 253, 8897, 88958])

리스트가 arr이라고 할 때 리스트를 처음부터 n-1까지 순회하며 arr[i]가 arr[i+1]의 접미사인지 확인하면 됩니다.

(주의: 포함이 돼있는지 확인하는게 아니라 접미사인지 확인하는 것입니다. 이 부분을 놓쳐서 100%까지 갔는데 틀렸습니다가 떳습니다.)

 


 Python

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#
# Created by MinSeo on 2022/02/18.
# Copyright ⓒ 2021 MinSeo Shin. All rights reserved.
#
 
tt = int(input())
for t in range(tt):
    ii = int(input())
    arr = []
    for i in range(ii):
        arr.append(input())
    arr.sort()
    torf = True
    for i in range(len(arr)-1):
        if arr[i] == arr[i+1][:len(arr[i])]:
            torf = False
            break
    if torf:
        print('YES')
    else:
        print('NO')
 
cs