1759번

seuls2·2023년 3월 28일
0

BOJ

목록 보기
20/55

1759

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

int l, c;
vector<char> v;

bool isM(char c) {
	if (c == 'a' || c == 'e' || c == 'i' || c == 'o' || c == 'u') {
		return true;
	}
	return false;
}

void dfs(int index, vector<char> result, bool visit[15], int m, int j) {
	if (m + j == l) {
		if (m >= 1 && j >= 2) {
			for (int i = 0; i < result.size(); i++) {
				cout << result[i];
			}
			cout << endl;
		}
		return;
	}

	for (int i = index + 1; i < v.size(); i++) {
		if (!visit[i]) {
			result.push_back(v[i]);
			visit[i] = true;
			if (isM(v[i])) {
				dfs(i, result, visit, m + 1, j);
			}
			else {
				dfs(i, result, visit, m, j + 1);
			}
			visit[i] = false;
			result.pop_back();
		}
	}
}

int main() {
	cin >> l >> c;
	for (int i = 0; i < c; i++) {
		char input;
		cin >> input;
		v.push_back(input);
	}

	sort(v.begin(), v.end());

	for (int i = 0; i <= v.size() - l; i++) {
		bool visit[15] = { false };
		vector<char> result;
		visit[i] = true;
		result.push_back(v[i]);
		if (isM(v[i])) {
			dfs(i, result, visit, 1, 0);
		}
		else {
			dfs(i, result, visit, 0, 1);
		}
		
	}
}
profile
공부 기록용 ( ᵕ·̮ᵕ )♩

0개의 댓글