-
[백준 / Python] 5052번 전화번호 목록 | 초코더알고리즘/백준 2020. 1. 14. 00:14
https://www.acmicpc.net/problem/5052
접근법
numbers배열에 전화번호 목록을 입력받아옵니다. 그리고 정렬시킵니다.
문자열을 정렬시키면 ['911', '97625999', '91125426'] 이런식으로 사전순으로 정렬되므로 비교해줄때 i번째와 i+1번째만 비교(붙어있는 문자열끼리만 비교해도 접두어가 겹치는지 알수있음)합니다.
저는 numbers를 입력받을때 input()함수를 썼는데 시간초과가 떠서 이제 sys.stdin.readline()함수를 사용해서 한줄씩 입력받아오는 것을 습관들이겠습니다.
numbers.append(sys.stdin.readline().strip())을 하고 numbers를 출력해보면 ['911\n', '97625999\n', '91125426\n']입니다. 개행문자를 제거해주기위해 strip()함수를 사용하였습니다.
나의 풀이
import sys def solution(numbers): numbers.sort() #numbers 정렬시키면 사전순으로 정렬 for i in range(len(numbers)-1): #정렬되어있으므로 i번째와 i+1번째만 비교해보면됌 if numbers[i] in numbers[i+1]: return False return True numbers=[] t=int(input()) answer=[] for i in range(t): n=int(input()) for _ in range(n): numbers.append(sys.stdin.readline().strip()) answer.append(solution(numbers)) numbers.clear() for yn in answer: if yn == False: print('NO') else: print('YES')
'알고리즘 > 백준' 카테고리의 다른 글
[백준 / Python] 2399번 거리의 합 | 초코더 (1) 2020.01.15 [백준 / Python] 2959번 거북이 | 초코더 (0) 2020.01.14 [백준 / Python] 3047번 ABC | 초코더 (0) 2020.01.13 [백준 / Python] 10825번 국영수 | 초코더 (0) 2020.01.13 [백준 / Python] 11004번 K번째 수 | 초코더 (0) 2020.01.13