알고리즘 교육/5. 문자열

문자열 포함관계 조사

곰제비 2022. 7. 15. 23:44
문제

문자열 A와 B가 주어질 때, 문자열 B가 문자열 A에 포함되어 있는지를 조사하는 프로그램을 작성하시오. 단, 문자열 A와 B에는 알파벳으로만 이루어져 있으며, 공백은 포함되지 않는다고 가정한다.  

 

입력

첫 번째 줄에 문자열 A, 두 번째줄에 문자열 B가 주어진다. 각각의 길이는 1,000을 넘지 않는다. 두 문자열은 모두 소문자 알파벳으로만 구성되어있다.

 

출력

문자열 B가 문자열 A에 포함되면 YES, 아니면 NO를 출력한다.

 

예제 입력

watermelon

melon

 

예제 출력

YES

 

전체 코드

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
#include <iostream>
 
using namespace std;
 
int result[30];
int n;
int cnt;
 
void getResult(int mySum, int idx){
  // 현재까지 구한 합이 mySum
  // 그리고 지금, idx번째 숫자를 결정할 차례. 즉, result[idx]
  
  if(mySum == n){
    cout << result[0];
    for(int i=1; i<idx; i++)
      cout << '+' << result[i];
    cout << '\n';
    cnt++;
  }
  else{
    int myNumber;
    if(idx == 0)
      myNumber = n-1;
    else
      myNumber = n - mySum;
    
    for(int i=myNumber; i>=1; i--){
      result[idx] = i;
      
      if(idx>0 && result[idx-1< result[idx])
        continue;
      getResult(mySum+i, idx+1);
    }
  }
}
int main()
{
  cin >> n;
  getResult(0,0);
  cout << cnt;
  return 0;
}
cs