반응형
문제링크:www.acmicpc.net/problem/1759
dfs문제입니다. 조건에 맞게 구현해주면 되는 간단한 문제였습니다.
주의할점은
- 1. 알파벳들을 정렬해주어야 한다는 것
- 2. 모음 1자, 자음 2자 이상이어야 한다는 것
정답코드입니다.
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
int l, c;
string arr;
bool checked[17] = { 0, };
void dfs(int cnt, int current) {
if (cnt == l) {
int m=0, j=0;
for (int i = 0; i < arr.size(); i++) {
if (checked[i]) {
if (arr[i] == 'a' || arr[i] == 'e' || arr[i] == 'i' || arr[i] == 'o' || arr[i] == 'u')
m++;
else
j++;
}
}
if (m >= 1 && j >= 2) {
for (int i = 0; i < arr.size(); i++)
if (checked[i])
cout << arr[i];
cout << endl;
}
return;
}
for (int i = current; i < arr.size(); i++) {
if (checked[i] == 0) {
checked[i] = 1;
dfs(cnt + 1, i);
checked[i] = 0;
}
}
return;
}
int main() {
ios_base::sync_with_stdio(0);
cin.tie(0), cout.tie(0);
cin >> l >> c;
for (int i = 0; i < c; i++) {
char temp;
cin >> temp;
arr += temp;
}
sort(arr.begin(), arr.end());
//cout << arr << endl;
dfs(0, 0);
return 0;
}
반응형
'알고리즘 > DFS' 카테고리의 다른 글
[백준] 1941-소문난 칠공주(C++) (0) | 2021.01.14 |
---|---|
[프로그래머스]N-Queen(c++,c) (0) | 2021.01.14 |
[백준] 15686-치킨 배달(C++) (0) | 2021.01.11 |
[백준] 2023-신기한 소수(C++) (0) | 2021.01.02 |
[백준] 14267-내리 칭찬(C++) (0) | 2021.01.01 |