728x90
반응형
https://www.acmicpc.net/problem/14426
14426번: 접두사 찾기
문자열 S의 접두사란 S의 가장 앞에서부터 부분 문자열을 의미한다. 예를 들어, S = "codeplus"의 접두사는 "code", "co", "codepl", "codeplus"가 있고, "plus", "s", "cude", "crud"는 접두사가 아니다. 총 N개의 문자
www.acmicpc.net

문제 해결
- 하나씩 비교를 하면 시간복잡도가 매우 크다.
- 따라서 정렬을 한 후에 사전식 배열 비교를 한다.
- S에 포함되어있는 문자열과 검사해야하는 문자열을 비교해서 포함하면 정답+1과 다음 검사해야하는 문자열을 비교를 한다.
- 만약 포함여부에 해당하지 않고 S에 포함되어있는 문자열의 사전식 배열이 더 뒤이면 검사해야하는 문자열을 다음 것으로 넘긴다.
- 만약 포함여부에 해당하지 않고 S에 포함되어있는 문자열의 사전식 배열이 더 앞이면 S에 포함되어 있는 문자열을 다음 것으로 넘긴다.
CODE
import sys
input = sys.stdin.readline
if __name__ == "__main__":
n, m = map(int, input().split())
S = []
for _ in range(n):
S.append(input().strip())
S.sort()
answer = 0
s = []
for i in range(m):
test = input().strip()
s.append(test)
s.sort()
i = 0
j = 0
while i<n and j<m:
if S[i][:len(s[j])] == s[j]:
answer += 1
j += 1
continue
elif S[i] > s[j]:
j += 1
continue
elif S[i] < s[j]:
i += 1
continue
print(answer)
728x90
반응형
'알고리즘 > [python] 백준 BOJ' 카테고리의 다른 글
[python] 백준 2304 창고 다각형 (0) | 2024.03.14 |
---|---|
[python] 백준 1315 RPG (0) | 2024.03.11 |
[python] 백준 16724 피리 부는 사나이 (0) | 2024.03.08 |
[python] 백준 4386 별자리 만들기 (0) | 2024.03.07 |
[python] 백준 16566 카드 게임 (0) | 2024.03.05 |
댓글