- vector 와 replace() 이용
#include<iostream>
#include<string>
#include<vector>
using namespace std;
int main() {
vector<string> cro_alpha = { "c=", "c-","dz=","d-","lj","nj","s=","z=" };
string str;
cin >> str;
size_t idx;
for (size_t i = 0; i< cro_alpha.size(); i++) {
while (1) {
idx = str.find(cro_alpha[i]);
if (idx == string::npos) {
break;
}
str.replace(idx, cro_alpha[i].length(), "0");
}
}
cout << str.length();
}
find 함수는 찾는 문자열의 첫 번째 인덱스를 반환함
-> 찾는 문자열이 없는 경우에는 string::npos를 반환함
ex) ljes=njak
- str
str | l | j | e | s | = | n | j | a | k | str.length() = 9 |
str.replace(idx, cro_alpha[i].length(), "0") | 0 | e | 0 | 0 | a | k | str.length() = 6 |
- 처음에 작성한 코드
#include<iostream>
#include<string>
#include<vector>
using namespace std;
int main() {
vector<string> cro_alpha = { "c=", "c-","dz=","d-","lj","nj","s=","z=" };
string str;
cin >> str;
int idx;
for (size_t i = 0; i< cro_alpha.size(); i++) {
while (1) {
idx = str.find(cro_alpha[i]);
if (idx == string::npos) {
break;
}
str.replace(idx, cro_alpha[i].length(), "0");
}
}
cout << str.length();
}
idx와 string::npos 비교 시 타입이 맞지 않아서 그런듯
int타입으로 정의했던 idx를 size_t 타입으로 변경하였더니 warning이 발생하지 않음
'코딩테스트 > programming_C++' 카테고리의 다른 글
baekjoon #1712_손익분기점 (0) | 2021.10.27 |
---|---|
baekjoon #1316_그룹 단어 체커_c++ (0) | 2021.10.27 |
baekjoon #5622_다이얼_c++ (0) | 2021.10.26 |
baekjoon #2908_상수_c++ (0) | 2021.10.26 |
baekjoon #1152_단어의 개수_c++ (0) | 2021.10.26 |