[백준] 5052. 전화번호 목록

원숭2·2022년 1월 23일
0

백준

목록 보기
10/54

문제

풀이

  1. 주어진 전화번호를 pb 배열에 넣어 줌.
  2. pb배열을 오름 차순으로 정렬함.
    ([911, 97625999, 91125426] -> [911, 91125426, 97625999])
  3. 정렬된 배열에서 어떤 번호의 접두어가 될 수 있는 단어가 어떤 번호 앞에 오게 됨을 알 수 있음.
  4. 정렬 후 앞 뒤 단어만 서로 비교해줘도 충분히 답을 찾아낼 수 있음.

코드

import sys

def phone() :
    t = int(sys.stdin.readline())
    
    for _ in range(t) :
        n = int(sys.stdin.readline())
        pb = []
        for _ in range(n) :
            pb.append(sys.stdin.readline().rstrip())
        
        pb.sort()
        
        for i in range(len(pb)-1) :
            if len(pb[i]) < len(pb[i+1]) :
                if pb[i+1][:len(pb[i])] == pb[i] :
                    print('NO')
                    break
        else :
            print('YES')
        
phone()

0개의 댓글