본문 바로가기
Tests/백준

[백준] 5052번 전화번호 목록 > 파이썬

by 코딩하는 금융인 2021. 7. 19.

백준 5052번 전화번호 목록 (난이도 : 中)

출처 : 백준 5052번 전화번호 목록

 

5052번: 전화번호 목록

첫째 줄에 테스트 케이스의 개수 t가 주어진다. (1 ≤ t ≤ 50) 각 테스트 케이스의 첫째 줄에는 전화번호의 수 n이 주어진다. (1 ≤ n ≤ 10000) 다음 n개의 줄에는 목록에 포함되어 있는 전화번호가

www.acmicpc.net


나의 풀이 in Python3

import sys
n = int(sys.stdin.readline())
real = False

for _ in range(n):
    n_call = int(sys.stdin.readline())
    
    # 전화번호 목록 - 문자열
    cl = list(sys.stdin.readline().rstrip() for _ in range(n_call))
    cl.sort()
    
    for i in range(len(cl)-1):
    # 문자열로 정렬되었으므로 바로 옆만 비교
        if cl[i] in cl[i+1][:len(cl[i])]:
            print("NO")
            real = True
            break
    if real == False:
        print("YES")
    real = False
  • 전화번호 목록 리스트화 및 문자열 정렬
  • 문자열로 정렬되어있으므로 바로 옆 인덱스만 비교해주면 됨

중요 포인트는 2가지.

  1. sys 모듈 대신 input()을 쓰면, 시간 초과 문제 발생하니 주의
  2. 전화번호는 문자열로 인식되어 Ex) 정렬 시 '1234',  '145', '12345' -> '1234', '12345', '145'
반응형

댓글