처음엔 배열을 생각하였으나 조건이 계속 추가될 수 있는 점을 고려하여 벡터를 응용해보기로 하였다.
원래 생각했던 방식은 배열과 if절을 사용하여 특정 문자열을 찾고 나면 임의의 temp 값을 1올린 후 그 문자열을 지우고 다시 조건을 돌려 temp에 추가하는 풀이를 하려고 했으나 'c=c=' 같이 특정문자열이 두번 이상 반복되는 경우를 대응하기 어려웠고, 무엇보다 조건문이 계속 추가되면서 코드가 매우 지저분해졌다.
#include <bits/stdc++.h>
using namespace std;
int main()
{
vector<string> x = { "c=", "c-", "dz=","d-","lj","nj","s=","z=" };
int n;
string str;
cin >> str;
for (int i = 0; i < x.size(); i++) {
while (1) {
n = str.find(x[i]);
if (n == string::npos)
break;
str.replace(n, x[i].length(), "+");
}
}
cout << str.length();
}
위 방식을 사용하면 굳이 임의 값을 생성하지 않아도 되고 && 이나 || 등 지저분한 조건문들이 필요하지 않다.
'알고리즘' 카테고리의 다른 글
[백준/BOJ] 11047번 c++ 문제풀이 (0) | 2024.01.16 |
---|