반응형
https://www.acmicpc.net/problem/5052
5052번: 전화번호 목록
첫째 줄에 테스트 케이스의 개수 t가 주어진다. (1 ≤ t ≤ 50) 각 테스트 케이스의 첫째 줄에는 전화번호의 수 n이 주어진다. (1 ≤ n ≤ 10000) 다음 n개의 줄에는 목록에 포함되어 있는 전화번호가
www.acmicpc.net
import sys
t =int(sys.stdin.readline().strip())
for _ in range(t):
numbers = []
flag = True
n = int(sys.stdin.readline().strip())
numbers = [sys.stdin.readline().strip() for _ in range(n)]
numbers.sort()
for i in range(n-1):
front = len(numbers[i])
if numbers[i] == numbers[i+1][:front]:
flag = False
break
if flag == False:
print('NO')
else:
print('YES')
먼저 한 번호가 다른 번호의 접두어에 해당하면 False
로 접두어 해당하지 않는다면 True
로 값을 저장할 수 있도록 변수 flag
를 생성하였습니다.
numbers
리스트에 번호를 입력받고 numbers
를 sort()
를 사용하여 정렬을 시킵니다.numbers
안에 저장되어 있는 번호들이 정렬이 되면서 비슷한 번호들끼리 가까워지게 됩니다.
반복문으로 저장되어 있는 번호를 확인합니다.
먼저 현재 번호의 길이를 front
라는 변수로 저장을 하고 현재 번호(numbers[i]
)가 다음 번호(numbers[i+1]
)의 front
까지의 숫자와 동일하다면 flag
를 False
로 하고 break
로 반복문을 탈출합니다.
현재 번호 numbers[i]
가 123
, 다음번호 numbers[i+1]
이 12345
라면 front
는 3
이 되고 numbers[i]
와 numbers[i+1][:3]
은 123
으로 동일하기 때문에 flag
는False
가 되며 반목문을 탈출하게 됩니다.
반복문이 종료되고 flag
의 값이 False
라면 "NO"를 True
라면 "YES"를 출력합니다.
반응형
'코딩테스트' 카테고리의 다른 글
[코딩테스트] 프로그래머스 추억 점수 파이썬(Python) (0) | 2023.04.07 |
---|---|
[코딩테스트] 백준 수열(2559) 파이썬(Python) (0) | 2023.04.07 |
[코딩테스트] 프로그래머스 문자열 나누기 파이썬(Python) (0) | 2023.03.24 |
[코딩테스트] 프로그래머스 [3차] 방금그곡 파이썬(Python) (0) | 2023.03.23 |
[코딩테스트] 프로그래머스 2개 이하로 다른 비트 파이썬(Python) (0) | 2023.03.22 |