문서 검색 성공
시간 제한메모리 제한제출정답맞힌 사람정답 비율
2 초 | 128 MB | 13459 | 5351 | 4250 | 39.297% |
문제
세준이는 영어로만 이루어진 어떤 문서를 검색하는 함수를 만들려고 한다. 이 함수는 어떤 단어가 총 몇 번 등장하는지 세려고 한다. 그러나, 세준이의 함수는 중복되어 세는 것은 빼고 세야 한다. 예를 들어, 문서가 abababa이고, 그리고 찾으려는 단어가 ababa라면, 세준이의 이 함수는 이 단어를 0번부터 찾을 수 있고, 2번부터도 찾을 수 있다. 그러나 동시에 셀 수는 없다.
세준이는 문서와 검색하려는 단어가 주어졌을 때, 그 단어가 최대 몇 번 중복되지 않게 등장하는지 구하는 프로그램을 작성하시오.
입력
첫째 줄에 문서가 주어진다. 문서의 길이는 최대 2500이다. 둘째 줄에 검색하고 싶은 단어가 주어진다. 이 길이는 최대 50이다. 문서와 단어는 알파벳 소문자와 공백으로 이루어져 있다.
출력
첫째 줄에 중복되지 않게 최대 몇 번 등장하는지 출력한다.
예제 입력 1 복사
ababababa
aba
예제 출력 1 복사
2
예제 입력 2 복사
a a a a a
a a
예제 출력 2 복사
2
예제 입력 3 복사
ababababa
ababa
예제 출력 3 복사
1
예제 입력 4 복사
aaaaaaa
aa
예제 출력 4 복사
3
출처
- 문제를 번역한 사람: baekjoon
- 데이터를 추가한 사람: chan120317, jaehoo1
- 문제의 오타를 찾은 사람: hist0613
알고리즘 분류
import sys
if __name__ == '__main__':
doc = sys.stdin.readline().strip()
word = sys.stdin.readline().strip()
cnt = 0
while doc.find(word) != -1:
a = doc.find(word)
doc = doc.replace(doc[0:a] + word, '', 1)
cnt += 1
print(cnt)
문자열은 find 함수를 사용할 수 있고 리스트는 index 함수를 사용할 수 있다. index 함수는 찾는 값이 없을 경우 예외처리를 해야하므로 문자열로 코드를 작성했다. replace로 단어를 찾으면 해당 단어를 삭제하고 cnt 값을 증가한다. 여기서 주의할 점은 단어를 삭제하고 남은 문서가 합쳐졌는데 우연히 합쳐지면서 단어가 또 생길 수 있으므로 찾은 단어 인덱스 앞에 있는 값들을 같이 삭제해준다.
댓글