티스토리 뷰

백준 스터디

백준 1543 문서 검색 — Python 풀이

박완희버서커 2025. 7. 8. 22:53
반응형
📄 문서 검색 성공 — Python 풀이

📄 문서 검색 성공 — Python 풀이



문제 설명

문서에서 특정 단어가 몇 번 등장하는지 세는 프로그램을 Python으로 작성합니다.
중복되게 세지 않고, 발견할 때마다 단어의 길이만큼 건너뛰면서 세야 합니다.

예를 들어, 문서가 aaaaaaa이고, 단어가 aa라면:

  • 0번 위치에서 aa 발견 → 건너뜀
  • 2번 위치에서 aa 발견 → 건너뜀
  • 4번 위치에서 aa 발견 → 건너뜀

3번 등장합니다.



아이디어

1️⃣ 단어 길이만큼 슬라이싱해서 비교

문서의 현재 위치에서 단어 길이만큼 잘라서 단어와 비교합니다.
완전히 일치하면 등장 횟수를 하나 세고, 현재 위치를 단어 길이만큼 증가시킵니다.

2️⃣ 하나라도 다르면 한 칸만 전진

일치하지 않는다면 현재 위치를 한 칸만 이동해 다시 비교합니다.



전체 코드


# 입력받기
arr = input()
str_1 = input()

str_n = len(str_1)  # 단어 길이
cnt = 0             # 등장 횟수

i = 0               # 현재 위치
while i <= len(arr) - str_n:
    if arr[i:i+str_n] == str_1:
        cnt += 1
        i += str_n  # 단어 길이만큼 건너뛰기
    else:
        i += 1      # 한 칸 전진

print(cnt)


부분 코드별 설명

📌 입력받기


arr = input()
str_1 = input()
  • 첫 줄에 문서를 입력받습니다.
  • 둘째 줄에 검색할 단어를 입력받습니다.
  • 두 입력 모두 문자열로 처리됩니다.

📌 변수 설정


str_n = len(str_1)
cnt = 0
i = 0
  • str_n은 검색할 단어의 길이입니다.
  • cnt는 단어가 문서에 몇 번 등장했는지를 세는 변수입니다.
  • i는 현재 문서에서 탐색 중인 위치입니다.

📌 탐색 루프


while i <= len(arr) - str_n:
  • i가 문서 끝까지 가면 멈춥니다.
  • 현재 위치부터 단어 길이만큼 비교할 수 있어야 하므로 i <= len(arr) - str_n까지만 반복합니다.

📌 일치 여부 확인


if arr[i:i+str_n] == str_1:
  • 문서의 i번째부터 i+str_n까지 잘라서 검색할 단어와 비교합니다.
  • 완전히 일치하면 cnt를 1 증가시키고, i를 단어 길이만큼 건너뜁니다.
  • 일치하지 않으면 i를 한 칸만 증가시켜 다음 위치부터 다시 탐색합니다.

📌 출력


print(cnt)

최종적으로 단어가 문서에 몇 번 등장했는지를 출력합니다.



예제 실행

문서 단어 출력
abababa aba 2
a a a a a a a 2
ababababa ababa 1
aaaaaaa aa 3


반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/09   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함
반응형