728x90
이 문제는 크게 어려울 것은 없지만 중요한 것은 중복을 방지하는 것이다. 아래와 같은 그림에서도 만약 중복을 생각하지 않고 푼다면 index가 2인 자리의 a부터 또다시 단어가 찾아져 원하는 답보다 더 크게 나올 것이다.
따라서 중요한 포인트는 start 기준점을 잡아서 한 칸씩 오른쪽으로 움직이면서 문서에서 단어를 검색하고 그 단어가 나왔다면 start 기준점을 단어의 길이만큼 올려주는 것이다.
data = input()
target = input()
start = 0
count = 0
while start <= len(data) - len(target):
if data[start:start+len(target)] == target:
count += 1
start += len(target) #단어가 중복되지 않게 하기 위해서!
else:
start += 1 #원하는 문자열이 없다면 한칸씩 옆으로 이동
print(count)
'Algorithm' 카테고리의 다른 글
백준 알고리즘 파이썬(Python) 1793번 타일링 (0) | 2021.08.17 |
---|---|
백준 알고리즘 파이썬(Python) 10815번 숫자카드 (0) | 2021.08.05 |
백준 알고리즘 파이썬(Python) 1302번 베스트셀러 (0) | 2021.08.04 |
백준 알고리즘 파이썬(Python) 1074번 Z (0) | 2021.08.03 |
백준 알고리즘 파이썬(Python) 2747번 피보나치 수 (0) | 2021.08.03 |