[백준 골드5] 1759 : 암호 만들기

수민이슈·2023년 9월 29일
0

[C++] 코딩테스트

목록 보기
76/116
post-thumbnail

🖊️ 문제

https://www.acmicpc.net/problem/1759


🖊️ 풀이

완전탐색 (부르트포스) 알고리즘과 DFS..

일단 문자열들을 싹 다 만들고, 나중에 조건을 판별해줬다.

아무래도 완전탐색이 어렵다 나는 ... ㅠㅠ

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

int L, C;
vector<char> vec;
vector<char> result;

bool Check()
{
	int moeum = 0;
	for (auto& r : result) {
		if (r == 'a' || r == 'e' || r == 'i' || r == 'o' || r == 'u')
			moeum++;
	}
	if (moeum >= 1 && L - moeum >= 2) return true;
	return false;
}

void DFS(int cur)
{
	if (result.size() == L) {
		if (Check()) {
			for (auto& r : result)
				cout << r;
			cout << '\n';
		}
		return;
	}

	for (int i = cur; i < C; i++) {
		result.push_back(vec[i]);
		DFS(i+1);
		result.pop_back();
	}
}

int main()
{
	cin.tie(0);
	cout.tie(0);
	ios::sync_with_stdio(0);

	cin >> L >> C;

	char c;
	for (int i = 0; i < C; i++) {
		cin >> c;
		vec.push_back(c);
	}
	sort(vec.begin(), vec.end());

	DFS(0);
}

0개의 댓글