5052번: 전화번호 목록
첫째 줄에 테스트 케이스의 개수 t가 주어진다. (1 ≤ t ≤ 50) 각 테스트 케이스의 첫째 줄에는 전화번호의 수 n이 주어진다. (1 ≤ n ≤ 10000) 다음 n개의 줄에는 목록에 포함되어 있는 전화번호가
www.acmicpc.net
코드
import sys
input = sys.stdin.readline
for _ in range(int(input())):
n = int(input())
phones = [input().rstrip() for _ in range(n)]
phones.sort()
possible = True
for i in range(len(phones)-1):
if phones[i] == phones[i+1][:len(phones[i])]:
possible = False
break
print("YES" if possible else "NO")
문자열 상태를 정렬하면 앞글자에서부터 비교하며 정렬하게 된다. 그러므로 전화번호 입력을 정수로 바꾸지 않고 문자열 그대로 받아서 정렬하면 같은 접두어를 가진 전화번호는 인접하게 된다. 이렇게 하면 한 번호를 전체와 비교해볼 필요 없이 맞붙어있는 두 번호만 비교해보면 된다.
'문제풀이 > 문자열' 카테고리의 다른 글
[Javascript/자바스크립트] 구름 - 단어의 개수 세기 (0) | 2024.07.01 |
---|---|
[Python/파이썬] 백준 14405번 피카츄 (0) | 2024.06.24 |
[Python/파이썬] 백준 3613번 Java vs C++ (0) | 2024.03.16 |
[Python/파이썬] 백준 19948번 음유시인 영재 (0) | 2024.03.14 |
[Python/파이썬] 백준 1251번 단어 나누기 (0) | 2024.03.08 |