[백준] 5052번-(Python 파이썬) - Tree

Choe Dong Ho·2021년 7월 7일
0

백준(python)

목록 보기
45/47

문제링크 : https://www.acmicpc.net/problem/5052

이번 문제는 배열에 전화번호 목록을 입력받아온 뒤 정렬을 해서 첫번째꺼부터 마지막꺼까지 서로 다음 번호와 비교만해봐도 앞에 문자가 겹치는 지 알 수 있다. 즉, 바로 뒤에 있는 번호만 확인하면 된다.

import sys
input = sys.stdin.readline

def solution(numbers):
    for i in range(len(numbers) - 1):
        if numbers[i] == numbers[i+1][0:len(numbers[i])]:
            print("NO")
            return
    print("YES")

t = int(input())
for _ in range(t):
    n = int(input())
    numbers = []
    for _ in range(n):
        numbers.append(input().strip())
    numbers.sort()
    solution(numbers)

풀고나서 알게 된 문자열이 특정문자로 시작하는지 여부를 알려주는 함수
startswith(시작하는 문자)를 이용한 풀이이다. 훨씬 간단하게 풀리는걸 볼 수 있다.

import sys

input = sys.stdin.readline

def solution():

    n = int(input())
    numbers = sorted([input().rstrip() for _ in range(n)])
    
    res = True
    for i in range(n-1):
        if(numbers[i+1].startswith(numbers[i])):
            res = False
            break
    
    print("YES" if res else "NO")

t = int(input())
for _ in range(t):         
    solution()
profile
i'm studying Algorithm

0개의 댓글