BOJ
[BOJ] 1543번 - 문서 검색
곰제비
2022. 6. 15. 18:08
<접근 방식>
두 문자열을 비교하여 한 문자열에 대하여 다른 문자열이 몇번 등장하는지 구하는 문제이다.(문자열 비교)
문제 조건에서 문자열은 공백도 포함을 하기 때문에 입력에 getline을 사용했다.
이해를 돕기 위해 문자열 A안에 문자열 B가 중복하지 않고 최대 몇번 등장하지 않는다고 가정한다.
이중 for문을 통해 바깥 for문으로 문자열 A길이만큼 돌리고 안쪽 for문으로 문자열 B길이로 비교한 다음
문자열이 다르면 다음 index값으로, 같다면 바깥 for문에서 문자열 B 길이만큼 index를 넘어가서 다시 비교한다.
<전체 코드>
#include <iostream>
#include <string>
#include <string.h>
using namespace std;
int main()
{
cin.tie(0);
ios_base::sync_with_stdio(false);
string input;
string cmp;
int count = 0;
int input_size = 0;
int cmp_size = 0;
getline(cin, input);
getline(cin, cmp);
input_size = input.size();
cmp_size = cmp.size();
for (int i = 0; i < input_size; i++) {
bool flag = true;
for (int j = 0; j < cmp_size; j++) {
if (input[i + j] != cmp[j]) {
flag = false;
break;
}
}
if (flag) {
count++;
i += cmp_size - 1;
}
}
cout << count;
}
<문제 링크>
https://www.acmicpc.net/problem/1543
1543번: 문서 검색
세준이는 영어로만 이루어진 어떤 문서를 검색하는 함수를 만들려고 한다. 이 함수는 어떤 단어가 총 몇 번 등장하는지 세려고 한다. 그러나, 세준이의 함수는 중복되어 세는 것은 빼고 세야 한
www.acmicpc.net