본문 바로가기
algorithm/ACMICPC

암호 만들기 -1759

by 에어컨조아 2019. 12. 3.

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

 

1759번: 암호 만들기

첫째 줄에 두 정수 L, C가 주어진다. (3 ≤ L ≤ C ≤ 15) 다음 줄에는 C개의 문자들이 공백으로 구분되어 주어진다. 주어지는 문자들은 알파벳 소문자이며, 중복되는 것은 없다.

www.acmicpc.net

 

코드 :

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

vector<char> num;
char mon[15] = {};
void solution(int s, int l, int c)
{
	//탈출조건
	if (num.size() == l)
	{
		//모음 최소 1개, 자음 최소 2개 체크
		int m_c = 0;
		int j_c = 0;
		for (auto iter = num.begin(); iter < num.end(); iter++)
		{
			if (*iter == 'a' || *iter == 'e' || *iter == 'i' ||
				*iter == 'o' || *iter == 'u')
				m_c++;
			else
				j_c++;
		}

		if (m_c >= 1 && j_c >= 2)
		{
			for (auto iter = num.begin(); iter < num.end(); iter++)
			{
				cout << *iter;
			}
			cout << "\n";
		}
		return;
	}

	for (int i = s; i < c; i++)
	{
		num.push_back(mon[i]);
		solution(i + 1, l, c);
		num.pop_back();
	}

}

int main()
{
	int l, c;
	cin >> l >> c;

	for (int i = 0; i < c; i++)
	{
		cin >> mon[i];
	}

	sort(mon, &mon[c]);

	solution(0, l, c);
	return 0;
}

'algorithm > ACMICPC' 카테고리의 다른 글

퇴사 - 14501  (0) 2019.12.03
부분수열의 합 - 1182  (0) 2019.12.03
연산자 끼워넣기 (2) - 15658  (0) 2019.12.03
연산자 끼워넣기 - 14888  (0) 2019.11.25
로또 - 6603  (0) 2019.11.25

댓글