[BOJ-5052] 전화번호 목록 (Python)

yuseon Lim·2021년 7월 12일
0

Problem Solving

목록 보기
31/37
post-thumbnail

🤒 문제

BOJ-5052 전화번호 목록

💊 풀이

  1. 전화번호 목록을 오름차순으로 정렬한다.

  2. 정렬하고 나서는 i번째가 i+1번째의 접두어가 되는지 확인만 하면 된다.

arr = ["123", "11", "112", "14", "13", "132", "12123423"]
print(sorted(arr)) # ['11', '112', '12123423', '123', '13', '132', '14']

이렇게 정렬된 결과를 보면 왜 그런지 쉽게 이해가 갈 것이다.

파이썬에서 문자열을 정렬할 때, sort()sorted()는 문자열 내의 하나하나의 유니코드를 기준으로 정렬한다.

print(ord("1")) # 49
print(ord("2")) # 50

✨ 소스코드

import sys

def is_consist(phones: list):
    for i in range(0, len(phones) - 1):
        if phones[i] == phones[i + 1][0 : len(phones[i])]:
            return False
    return True

t = int(input()) # 테스트케이스 수

for _ in range(t):
    n = int(input()) # 전화번호 수
    phones = [] # 전화번호 목록
    for _ in range(n): phones.append(sys.stdin.readline().strip())
    phones.sort()

    if is_consist(phones) == True:
        print("YES")
    else:
        print("NO")

profile
🔥https://devyuseon.github.io/ 로 이사중 입니다!!!!!🔥

0개의 댓글