본문 바로가기
Problem Solving/Baekjoon Online Judge

[BOJ #1543] 문서 검색

by DeveloperHan 2020. 7. 14.

BOJ #1543, 문서 검색 문제입니다.

 

입력으로 문서(문자열)와 단어가 주어집니다. 문서 속에서 단어가 총 몇 번 등장하는지 출력하면 됩니다. 단, 일반적인 방법으로 앞에서부터 탐색하면 안 됩니다. 자세한 사항은 예시를 참고해서 이해하는 것이 편합니다.

 

예를 들어, 문서 doc == 'abababa'이고 찾으려는 단어 word == 'ababa'이면 doc[0:len(word)] == doc[2:2+len(word)] == word입니다. 이런 상황에서 doc[0:len(word)]와 doc[2:2+len(word)]의 두 가지를 모두 count하면 안 됩니다. 둘 중 하나만 count해야 합니다.

 

사실 이것을 설명하면서 doc에 doc[index:index+len(word)]로 접근한 것이 이 문제의 거의 전부입니다. 해당 부분이 word와 일치할 때와 일치하지 않을 때를 구분해서 index를 적절히 조절해 주면 됩니다. 추가적으로 종료 조건도 신경써줘야겠죠. 문자열을 다루는 문제에선 종료 조건이 1이라도 어긋나면 대부분의 경우 IndexError가 발생하기 때문에 중요한 부분입니다.

 

이 문제가 유독 정답률이 낮은데, 이유는 잘 모르겠습니다. 어렵지 않게 풀 수 있는 문제입니다.

 

1. 전체 코드

더보기
doc = input('')
word = input('')

i = 0
cnt = 0
while len(doc[i:]) >= len(word):
    if doc[i:i + len(word)] == word:
        cnt += 1
        i += len(word)
    else:
        i += 1

print(cnt)

 

'Problem Solving > Baekjoon Online Judge' 카테고리의 다른 글

[BOJ #11728] 배열 합치기  (0) 2020.07.18
[BOJ #2231] 분해합  (0) 2020.07.15
[BOJ #1252] 이진수 덧셈  (0) 2020.07.14
[BOJ #2447] 별 찍기 - 10  (0) 2020.07.14
[BOJ #15965] K번째 소수  (0) 2020.07.13

댓글