728x90
https://www.acmicpc.net/problem/1543
간단한 문자열 탐색 문제이다.
첫번째 문자열을 전부 탐색하면서, 매번 두번째 문자열이랑 비교해준다.
현재 i번째 인덱스에서부터 비교를 해줘야하기 때문에, i+j인덱스와 j인덱스를 비교해주는 것!
비교했는데 동일하지않다면 for문에 의해 i가 1증가하면서 다시 탐색을 해주고,
만약 동일하다면,
예를 들어 3글자짜리와 비교했을 때 단순히 i가 1만 증가하면 중복되어 세는 경우가 발생할 수 있으므로 i를 글자의 길이-1만큼 증가시켜준다! (-1을 하는 이유는 어차피 for문에 의해 i가 한번 증가하므로)
#include <bits/stdc++.h>
#define ll long long
using namespace std;
int main() {
ios_base::sync_with_stdio(false);
cin.tie(nullptr);
cout.tie(nullptr);
string doc,word;
getline(cin, doc);
getline(cin, word);
int cnt=0;
for(int i=0; i<doc.size();i++){
bool flag=true;
for(int j=0;j<word.length();j++) {
if(doc[i+j]!=word[j]) {
flag=false;
break;
}
}
if(flag) {
cnt++;
i+=word.length()-1;
}
}
cout << cnt;
return 0;
}
728x90
'알고리즘 > 백준(BOJ)' 카테고리의 다른 글
[백준/C++] 2146번 다리 만들기 (0) | 2022.10.02 |
---|---|
[백준/C++] 2141번 우체국 (0) | 2022.10.02 |
[백준/C++] 1700번 멀티탭 스케줄링 (0) | 2022.10.02 |
[백준/C++] 5014번 스타트링크 (0) | 2022.09.30 |
[백준/C++] 12904번 A와 B (0) | 2022.09.30 |