영어로만 이루어진 어떤 문서를 검색하는 함수를 만들려고 한다. 이 함수는 어떤 단어가 총 몇 번 등장하는지 세려고 한다. 그러나, 세준이의 함수는 중복되어 세는 것은 빼고 세야 한다. 그 단어가 최대 몇 번 중복되지 않게 등장하는지 구하는 프로그램을 작성하시오.
index값 이용해서 처음 발견한 곳에서부터 단어 길이만큼 건너뛴 범위부터 다시 find()를 실행하여 풀었다. 문자열 내에서 못찾을 경우 -1을 반환하기 때문에 더이상 못찾거나 index값이 문서를 초과하는 경우 반복문을 탈출하였다.
import sys
input = sys.stdin.readline
docs = input().rstrip()
word = input().rstrip()
cur = 0
count = 0
while cur < len(docs):
if docs.find(word, cur) == -1:
break
else:
cur = docs.find(word, cur)
count += 1
cur += len(word)
print(count)
요즘 문제풀고 나서 다른 사람은 어떻게 풀었는지 확인하는 편인데 눈을 의심했다. 뭐지? 한사람만 숏코딩한거면 그러려니 하는데 첫페이지 전부다 같은 코드다. count() 자체가 인자값을 중복해서 세지 않는다는 점에서 가능한 것 같다. 이것도 문제풀이 요령이라고 할 수 있으려나..? 아무튼 신기했다.
print(input().count(input()))