728x90
문제
세준이는 영어로만 이루어진 어떤 문서를 검색하는 함수를 만들려고 한다.
이 함수는 어떤 단어가 총 몇 번 등장하는지 세려고 한다.
그러나, 세준이의 함수는 중복되어 세는 것은 빼고 세야 한다.
예를 들어, 문서가 abababa이고, 그리고 찾으려는 단어가 ababa라면, 세준이의 이 함수는 이 단어를 0번부터 찾을 수 있고, 2번부터도 찾을 수 있다.
그러나 동시에 셀 수는 없다.
세준이는 문서와 검색하려는 단어가 주어졌을 때, 그 단어가 최대 몇 번 중복되지 않게 등장하는지 구하는 프로그램을 작성하시오.
https://www.acmicpc.net/problem/1543
입력
첫째 줄에 문서가 주어진다.
문서의 길이는 최대 2500이다.
둘째 줄에 검색하고 싶은 단어가 주어진다.
이 길이는 최대 50이다.
문서와 단어는 알파벳 소문자와 공백으로 이루어져 있다.
출력
첫째 줄에 중복되지 않게 최대 몇 번 등장하는지 출력한다.
예제
# input
ababababa
aba
# output
2
# input
a a a a a
a a
# output
2
# input
ababababa
ababa
# output
1
문제 풀이
# 입력 받기
doc = input()
word = input()
# 변수 초기화
answer = 0
idx = 0
while True:
# 문서의 남은 길이가 단어의 길이보다 짧으면 반복문 종료
if idx + len(word) > len(doc):
break
# 단어의 각 문자와 문서의 현재 위치부터의 문자가 일치하는지 확인
for i in range(len(word)):
# 중간에 맞지 않으면 루프를 빠져나가고, 문서의 인덱스를 하나 증가
if doc[idx + i] != word[i]:
idx += 1
break
else:
# 단어의 모든 문자가 일치하면 등장 횟수를 증가시키고, 문서의 인덱스를 단어의 길이만큼 증가
answer += 1
idx += len(word)
print(answer)
파이썬을 독학하시는 분들에게 도움이 되길 바라며,
혹 더 좋은 방법이 있거나 오류가 있다면 편하게 말씀 부탁드립니다.
728x90