본문 바로가기

알고리즘

파이썬 | 백준 | 5052 | 전화번호 목록 | arr.append((sys.stdin.readline()).strip())

1. 이중 포문으로 배열 속 문자열 모두 비교

 

import sys

def solution(arr):
    for num in arr:
        cnt = 0
        for num_ in arr:
            if num_.startswith(num):
                cnt += 1
                if cnt == 2:
                    return False
    return True

N = int(input())
#N = int(sys.stdin.readline())
for _ in range(N):
    a = int(input())
    arr = []
    for a_ in range(a):
        arr.append((sys.stdin.readline()).strip())
    if solution(arr):
        print("YES")
    else:
        print("NO")

 

시간 초과


2. 배열 정렬 후 앞 뒤 두 문자열만 비교

 

import sys

def solution(arr):
    arr.sort()
    for i in range(len(arr)-1):
        if arr[i+1].startswith(arr[i]):
            return False
    return True

N = int(input())
for _ in range(N):
    a = int(input())
    arr = []
    for a_ in range(a):
        arr.append((sys.stdin.readline()).strip())
    if solution(arr):
        print("YES")
    else:
        print("NO")

 

메모리 : 29380KB

시간 : 208ms

arr[i+1].startswith(arr[i]): 29380KB 208ms
arr[i] == arr[i+1][:len(arr[i])]: 29380KB 212ms