https://www.acmicpc.net/problem/1543
검색하고 싶은 단어를 want라는 string타입의 변수에 넣어놓자.
문서와 단어를 비교했을 때 일치한다면 그 다음 비교는 want의 다음 칸부터 검색을 해야지, 인덱스 한칸만 넘어가서 검색을 하면 안된다는 것에 유의해야한다.
input[i+j] == want[j]로 하나씩 찾고
만약 n == length, 즉 다 맞았다면 count를 하나 해주고 want 수만큼 점프해야하므로
i = i + length - 1을 해주었다(i+length만 하는게 원래는 맞지만 반복문의 i++을 신경써야해서 -1을 해주었다.)
#include <iostream>
#include <string>
using namespace std;
int main()
{
ios::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
string input, want;
getline(cin, input);
getline(cin, want);
const int length = want.length();
int i = 0;
int count = 0;
while (i < input.length())
{
int n = 0;
for (int j = 0; j <= length; j++)
{
if (n == length)
{
count++;
i = i + length - 1; // 마지막에 i++가 있어서 하나를 빼줌.
break;
}
if (input[i+j] == want[j])
{
n++;
continue;
}
else
{
break;
}
}
i++;
}
cout << count;
return 0;
}
'백준 문제풀이 > 실버4' 카테고리의 다른 글
백준 1205번 - 등수 구하기 (0) | 2022.03.17 |
---|---|
백준 1812번 - 사탕 (0) | 2022.03.17 |
백준 4949번 - 균형잡힌 세상 (0) | 2022.03.05 |
백준 10828번 - 스택 (0) | 2022.01.13 |
백준 2164번 - 카드2 (0) | 2022.01.12 |