[백준/BOJ] 백준 1543번 : 문서 검색
2020. 8. 4. 11:52ㆍ알고리즘 문제풀이
https://www.acmicpc.net/problem/1543
문서와 단어에 공백이 들어갈 수 있으므로 getline을 통해 문서와 단어를 입력받고, 문서에서 더 이상 단어를 찾을 수 없을 때까지 반복해서 단어를 찾는다. 문서에서 단어를 찾았을 때 찾은 단어의 앞쪽은 이 단어가 등장하지 않는것이므로 이 단어의 앞쪽을 문서에서 지우고, 중복되지 않게 단어를 찾기 위해 찾은 이 단어도 문서에서 지운다. 즉 이 부분들을 지운다는 것은 찾은 단어의 뒷부분만 문서에 남긴다는 뜻이므로 text.substr(text.find(f_text) + f_text.size()) 를 이용했다
코드
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
int main()
{
cin.tie(NULL);
ios_base::sync_with_stdio(false);
string text;
string f_text;
int cnt = 0;
//문자열에 공백이 들어갈 수 있으므로 getline을 통해 문서와 단어를 입력받는다
getline(cin, text);
getline(cin, f_text);
//문서에서 더 이상 단어를 찾을수 없을때 까지 반복해서 단어를 찾는다
while (text.find(f_text) != string::npos)
{
//단어 등장 개수 증가
cnt++;
//문서에서 찾은 단어의 앞쪽은 이 단어가 등장하지 않는것이므로
//문서에서 찾은 단어와 이 단어의 앞쪽을 지운다
text = text.substr(text.find(f_text) + f_text.size());
}
cout << cnt;
return 0;
}
'알고리즘 문제풀이' 카테고리의 다른 글
[백준/BOJ] 백준 1260번 : DFS와 BFS (0) | 2020.08.05 |
---|---|
[백준/BOJ] 백준 7576번 : 토마토 (0) | 2020.08.04 |
[백준/BOJ] 백준 2752번 : 세수정렬 (0) | 2020.08.03 |
[백준/BOJ] 백준 2446번 : 별 찍기 - 9 (0) | 2020.08.03 |
[백준/BOJ] 백준 2445번 : 별 찍기 - 8 (0) | 2020.08.03 |