본문 바로가기

알고리즘

[백준/BOJ] 2941번 c++ 문제풀이

처음엔 배열을 생각하였으나 조건이 계속 추가될 수 있는 점을 고려하여 벡터를 응용해보기로 하였다. 

원래 생각했던 방식은 배열과 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