티스토리 뷰
반응형
📄 문서 검색 성공 — 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 |
반응형
'백준 스터디' 카테고리의 다른 글
백준 1057: 토너먼트 Python 풀이 (0) | 2025.07.10 |
---|---|
백준 1057: 토너먼트 C++ (0) | 2025.07.10 |
백준 1543 문서 검색 — C++ 풀이 (1) | 2025.07.08 |
백준 1182 부분수열의 합 Python (1) | 2025.07.08 |
백준 1182 부분수열의 합 C++ (0) | 2025.07.08 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 브루트포스
- Python
- C++ 알고리즘
- 프로그래밍
- 문제 풀이
- 코딩테스트
- 그리디알고리즘
- 알고리즘 문제풀이
- dfs
- 파이썬코딩
- 객체지향
- 동적 계획법
- 동적계획법
- 코딩 테스트
- 문자열처리
- 백준
- 그래프 탐색
- python 알고리즘
- 코딩
- 파이썬
- 알고리즘
- DP
- c++알고리즘
- 문제풀이
- 인접 행렬
- 그리디
- 알고리즘기초
- c언어
- C++
- 알고리즘문제풀이
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함
반응형