반응형
본 문제는 주어진 c개의 문자 중 l개를 골라 암호를 만드는 문제다. 이때, 최소 한 개의 모음 (a, e, i, o, u)과 최소 두 개의 자음으로 구성되어 있어야 하며, 암호는 알파벳 순으로 이루어져야 한다.
따라서 주어진 c개의 문자를 정렬하고 c개 중 l개를 만들 수 있는 모든 경우의 수를 만들고 자음과 모음의 개수가 조건에 만족하는지 확인하면서 출력하면 된다.
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
|
#include <iostream>
#include <vector>
#include <algorithm>
#include <string>
using namespace std;
int main() {
int n, m;
cin >> n >> m;
vector<char> v;
for (int i = 0; i < m; i++) {
char tmp;
cin >> tmp;
v.push_back(tmp);
}
sort(v.begin(), v.end());
vector<int> u;
for (int i = 0; i < n; i++) {
u.push_back(0);
}
for (int i = 0; i < m-n; i++) {
u.push_back(1);
}
do {
int a = 0, b = 0;
string s = "";
for (int i = 0; i < m; i++) {
if (u[i] == 0) {
s += v[i];
if (v[i] == 'a' || v[i] == 'e' || v[i] == 'i' || v[i] == 'o' || v[i] == 'u') a += 1;
else b += 1;
}
}
if (a >= 1 && b >= 2) cout << s << "\n";
} while (next_permutation(u.begin(), u.end()));
}
|
cs |
반응형
'백준' 카테고리의 다른 글
[백준 14225] 부분수열의 합, C++ (0) | 2020.09.27 |
---|---|
[백준 3085] 사탕 게임, C++ (0) | 2020.09.08 |
[백준 2309] 일곱 난쟁이, c++ (0) | 2020.09.08 |
[백준 2668] 숫자고르기, c++ (0) | 2020.07.26 |
[백준 15685] 드래곤 커브, C++ (0) | 2020.05.16 |
댓글