티스토리 뷰

728x90

https://www.acmicpc.net/problem/14426

 

14426번: 접두사 찾기

문자열 S의 접두사란 S의 가장 앞에서부터 부분 문자열을 의미한다. 예를 들어, S = "codeplus"의 접두사는 "code", "co", "codepl", "codeplus"가 있고, "plus", "s", "cude", "crud"는 접두사가 아니다. 총 N개의 문자

www.acmicpc.net

 

시간이 약간 걸린 부분이 있는데 처음 문제풀이를 시도했을 땐,

접두사를 중복되지 않게 계산하기 위해 list에 저장하여 포함되는지 검사했습니다.  

이러한 처리 방식은 시간 초과를 발생시키므로 간단히 문자열과 접두사가 같은지 확인한 뒤,

break문을 추가해 최대한 시간을 줄여야 문제를 해결할 수 있습니다.

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
import sys
N, M = map(int, sys.stdin.readline().split())
lst, cnt = [], 0
for _ in range(N):
    lst.append(sys.stdin.readline().rstrip())
for _ in range(M):
    test = sys.stdin.readline().rstrip()
    for j in lst:
        if test == j[:len(test)]:
            cnt += 1
            break
 
print(cnt)
cs

 

 

댓글