반응형
◈ 중복 사용할 수 있고 문자열 재구성하기
#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개
반응형
'C언어 > 문제풀다 하나씩' 카테고리의 다른 글
주변도 같이 사라지는 배열에서 재귀구현 노가다 (0) | 2020.05.29 |
---|---|
trial and error! 연산자 순열 문제 (0) | 2020.05.29 |
경로 찾기 장애물 있고 (0) | 2020.05.29 |
등수일때는 index-1하기 (0) | 2020.05.27 |
동전 개수 세기 (0) | 2020.05.27 |
다른 블로그 참고한 조합 재귀방법 0자리를 비우고 for 문 안 씀 (0) | 2020.05.27 |
더 직관적인 char int 바꾸기 (0) | 2020.05.27 |
가장 큰 숫자 작은 숫자 찾기. 비효율적임 (0) | 2020.05.27 |