C언어/문제풀다 하나씩

string == 이거 된다!

mcdn 2020. 5. 27. 22:00
반응형

◈ 중복 사용할 수 있고 문자열 재구성하기

#include <iostream>
#include <string>
using namespace std;
int minn = 1000;
string name;
int len;
string pattern[5] = { "BTS", "SBS", "BS", "CBS", "SES" };
void dfs(int num, string summ) {
	//cout << summ << endl;
	int nn = summ.length();
	if (len < nn) return;
	for (int i = 0; i < nn;i++) {
		if (name[i] != summ[i])return;
		
	}
	if (summ == name) {
		if (minn > num) {
			//cout << num;
			minn = num;
		}
	}
	for (int i = 0; i < 5;i++) {
		
		dfs(num + 1, summ + pattern[i]);
	}
}
int main() {
	cin >> name;
	len = name.length();
	dfs(0, "");
	cout << minn;



}

[입력]문장을 입력 해주세요. (최대 30글자)

[출력]문장을 만들 수 있는 단어의 사용 최소 개수를 출력하세요.

입력 예제

CBSSES

출력 결과

2

CBSSES

BTS
SBS
BS
CBS
CBSBTS
CBSSBS
CBSBS
CBSCBS
CBSSES
CBSSESBTS
CBSSESSBS
CBSSESBS
CBSSESCBS
CBSSESSES
SES
2개

반응형