-
728x90
* 접근한 방법
- 벡터에 변경된 문자열을 담는다.
- loop을 돌면서 벡터에 담긴 문자열과 같은 것이 있는지 find()
- 같은 문자열을 발견하면 삭제
- 문자열이 삭제된 횟수 + 문자열에 남은 size() 출력#include <iostream>#include <vector>#include <string>using namespace std;int main(){int sum = 0, num = 0, blank = 0;bool find = false;vector<string> cro = { "c=", "c-", "dz=", "d-", "lj", "nj", "s=", "z=" };string s;getline(cin, s);while (1){find = false;for (int i = 0; i < cro.size(); i++){if (s.find(cro[i]) != string::npos) {int place = s.find(cro[i]);// n(lj)j에서 lj가 제거되면, nj를 또 삭제하기 때문에 공백을 넣어 방지s[place + cro[i].size() - 1] = ' ';s.erase(place, cro[i].size() - 1);find = true;blank++;num++;break;}}if (find == false)break;}num = num + s.size() - blank;cout << num;return 0;}* 생각하지 못했던 점
- find()결과가 없는 경우 0이 들어올 것 같았는데, 엄청큰 숫자가 들어옴.
=> 결과가 없는 경우는 s.find("문자열") == string::npos 이렇게 비교하자!
- 크로아티아문자에 해당하는 문자를 문자열사이에서 빼게되면 그 앞, 뒤글자들이 모여서 또 크로아티아문자로 계산함.
=> 같은 문자열을 삭제할때 공백을 넣어주어 분리해주자!
=> 문자열이 삭제된 횟수 + 문자열에 남은 size()를 출력할때, size()에 공백도 포함되어있으므로 공백 수는 제거하자!데롱디롱희희.. (๑′ᴗ‵๑)
'알고리즘 풀이 > 백준' 카테고리의 다른 글
[1712] 백준 : 손익분기점(C++) (0) 2020.04.24 [1316] 백준 : 그룹 단어 체커(C++) (0) 2020.04.24 [10845] 백준 알고리즘 : 큐(C++) (0) 2019.11.20 [1874] 백준 알고리즘 : 스택 수열(C++) (0) 2019.11.20 [9012] 백준 알고리즘 : 괄호(C++) (0) 2019.11.20