[파이썬][백준 5052][💛골드 4] 전화번호 목록 (해시, 트라이)

Date:     Updated:

Categories:

Tags:

🧞‍♂️ 난이도

💛 골드 4


🧞‍♂️ 문제

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

image


🧞‍♂️ 내 풀이

프로그래머스의 “전화번호 목록” 문제와 비슷하다 LeetCode에서도 비슷한 문제 풀어본 기억이 있는것 같다.

주어진 입력 숫자들을 오름차순으로 정렬시킨다

예를 들어 911, 97625999, 91125426 는 911, 91125426, 97625999,

이런식으로 정렬을 시켜셔

i 랑 i+1 만 비교하면 된다

100%까지 통과 성공하다가 틀렸습니다가 나와서 뭔가 하다가

생각해보니까 “접두어” 만 비교하는거였다 그래서 접두어만 확인하는 조건을 추가해주니까 통과됐다

🧞‍♂️ 파이썬 코드

import sys
input = sys.stdin.readline

tc = int(input())
for _ in range(tc):
    N = int(input())
    # 입력 숫자들 정렬
    nums = sorted([input().rstrip() for _ in range(N)])
    # 일관성이 계속 유지되는지 확인
    unique = True 
    for i in range(1, len(nums)):
        length = len(nums[i-1])
        if nums[i-1] in nums[i][:length]:
            unique = False
            break
    if unique:
        print('YES')
    else:
        print('NO')


맨 위로 이동하기

BOJ 카테고리 내 다른 글 보러가기