내가 작성했던 코드
#include <iostream>
#include <string>
using namespace std;
string str;
string f_str;
int main()
{
ios::sync_with_stdio(0), cin.tie(0);
getline(std::cin, str);
getline(std::cin, f_str);
int d_length = str.length();
int f_length = f_str.length();
int cnt = 0;
int result;
while ((result = str.find(f_str)) != string::npos)
{
++cnt;
str = str.substr(result + f_length, d_length);
}
cout << cnt;
return 0;
}
다른 분이 작성한 더 나이스한 방법(하단)
int a;
int main()
{
string s, y;
getline(cin, s); getline(cin, y);
auto pos = s.find(y);
while (pos != string::npos)
{
a++;
pos = s.find(y, pos + y.size());
}
cout << a;
}
||사고 과정
단어 검색이 중복없이 최대로 나오게 하려면 맨앞부터 차근차근 검색해가면 되니까 어려운건 없었고
검색하는 함수를 찾아보는데에 시간이 더 걸렸다.
||풀면서 느낀 것
- 문자열 문제도 항상 하나이상은 풀어야겠다.
문자열 문제는 가끔 풀게 되는데 할때마다 까먹는거 같아서 하루에 한번은 풀어야겠다.
'코딩 테스트 > 알고리즘 풀이' 카테고리의 다른 글
[백준 - 9465] 스티커 (0) | 2022.08.23 |
---|---|
[백준 - 11057] 오르막 수 (0) | 2022.08.23 |
[백준 - 1309] 동물원 (0) | 2022.08.22 |
[백준 - 1699] 제곱수의 합 (0) | 2022.08.22 |
[백준 - 7576] 토마토 (0) | 2022.08.18 |