문제 링크 : https://www.acmicpc.net/problem/1759
문제 설명
1 , L , C 와 문자들이 주어진다.
2. L 길이의 암호를 추측할껀데 모음(a,e,i,o,u) 한개이상 자음 2개이상 필요하고 사전 순서로 정렬 된 것만
암호로 사용 할 수있다.
3. 암호로 사용 가능한 문자를 모두 출력
알고리즘
일단 재귀로 구현 .
1. 입력받고 정렬
2. 재귀함수에서 string 의길이가 L이면 모음 갯수와 자음 갯수 검사하여 암호로 사용가능하면 출력 후 return
코드
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 43 44 45 46 47 48 49 50 51 52 53 | #include<iostream> #include<algorithm> using namespace std; int L, C; char arr[16]; void func(int idx, int moum, int jaum, string str) { //문자열의 길이가 L과 똑같으면 if (str.length() == L) { //자음갯수와 모음 갯수를 확인후 if (moum >= 1 && jaum >= 2) { //암호로 사용 가능하면 출력 cout << str << "\n"; return; } return; } for (int i = idx; i < C; i++) { string s = str; s.push_back(arr[i]); //현재 문자가 모음이면 모음+1 후 재귀 if (arr[i] == 'a' || arr[i] == 'e' || arr[i] == 'i' || arr[i] == 'o' || arr[i] == 'u') { func(i + 1, moum + 1, jaum, s); } //현재 문자가 자음이면 자음+1후 재귀 else { func(i + 1, moum, jaum + 1, s); } } return; } int main() { cin >> L >> C; for (int i = 0; i < C; i++) cin >> arr[i]; sort(arr, arr + C); func(0, 0, 0, ""); } | cs |
'c++ > 백준' 카테고리의 다른 글
백준 6236번: 용돈 관리 (0) | 2020.04.16 |
---|---|
백준 1992번: 쿼드트리 (0) | 2020.04.16 |
백준 14499번 : 주사위 굴리기 (0) | 2020.04.16 |
백준 1780번 : 종이의 개수 (0) | 2020.04.14 |
백준 2805번: 나무 자르기 (0) | 2020.04.14 |