https://www.acmicpc.net/problem/1759
๋ฌธ์
๋ฐ๋ก ์ด์ ์ต๋ฐฑ์ค ์กฐ๊ต๊ฐ ๋ฐฉ ์ด์ ๋ฅผ ์ฃผ๋จธ๋์ ๋ฃ์ ์ฑ ๊น๋นกํ๊ณ ์์ธ๋ก ๊ฐ ๋ฒ๋ฆฌ๋ ํฉ๋นํ ์ํฉ์ ์ง๋ฉดํ ์กฐ๊ต๋ค์, 702ํธ์ ์๋ก์ด ๋ณด์ ์์คํ ์ ์ค์นํ๊ธฐ๋ก ํ์๋ค. ์ด ๋ณด์ ์์คํ ์ ์ด์ ๊ฐ ์๋ ์ํธ๋ก ๋์ํ๊ฒ ๋์ด ์๋ ์์คํ ์ด๋ค.
์ํธ๋ ์๋ก ๋ค๋ฅธ L๊ฐ์ ์ํ๋ฒณ ์๋ฌธ์๋ค๋ก ๊ตฌ์ฑ๋๋ฉฐ ์ต์ ํ ๊ฐ์ ๋ชจ์(a, e, i, o, u)๊ณผ ์ต์ ๋ ๊ฐ์ ์์์ผ๋ก ๊ตฌ์ฑ๋์ด ์๋ค๊ณ ์๋ ค์ ธ ์๋ค. ๋ํ ์ ๋ ฌ๋ ๋ฌธ์์ด์ ์ ํธํ๋ ์กฐ๊ต๋ค์ ์ฑํฅ์ผ๋ก ๋ฏธ๋ฃจ์ด ๋ณด์ ์ํธ๋ฅผ ์ด๋ฃจ๋ ์ํ๋ฒณ์ด ์ํธ์์ ์ฆ๊ฐํ๋ ์์๋ก ๋ฐฐ์ด๋์์ ๊ฒ์ด๋ผ๊ณ ์ถ์ธก๋๋ค. ์ฆ, abc๋ ๊ฐ๋ฅ์ฑ์ด ์๋ ์ํธ์ด์ง๋ง bac๋ ๊ทธ๋ ์ง ์๋ค.
์ ๋ณด์ ์์คํ ์์ ์กฐ๊ต๋ค์ด ์ํธ๋ก ์ฌ์ฉํ์ ๋ฒํ ๋ฌธ์์ ์ข ๋ฅ๋ C๊ฐ์ง๊ฐ ์๋ค๊ณ ํ๋ค. ์ด ์ํ๋ฒณ์ ์ ์ํ ๋ฏผ์, ์์ ํ์ ๋ ์กฐ๊ต๋ค์ ๋ฐฉ์ ์นจํฌํ๊ธฐ ์ํด ์ํธ๋ฅผ ์ถ์ธกํด ๋ณด๋ ค๊ณ ํ๋ค. C๊ฐ์ ๋ฌธ์๋ค์ด ๋ชจ๋ ์ฃผ์ด์ก์ ๋, ๊ฐ๋ฅ์ฑ ์๋ ์ํธ๋ค์ ๋ชจ๋ ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
์ ๋ ฅ
์ฒซ์งธ ์ค์ ๋ ์ ์ L, C๊ฐ ์ฃผ์ด์ง๋ค. (3 ≤ L ≤ C ≤ 15) ๋ค์ ์ค์๋ C๊ฐ์ ๋ฌธ์๋ค์ด ๊ณต๋ฐฑ์ผ๋ก ๊ตฌ๋ถ๋์ด ์ฃผ์ด์ง๋ค. ์ฃผ์ด์ง๋ ๋ฌธ์๋ค์ ์ํ๋ฒณ ์๋ฌธ์์ด๋ฉฐ, ์ค๋ณต๋๋ ๊ฒ์ ์๋ค.
์ถ๋ ฅ
๊ฐ ์ค์ ํ๋์ฉ, ์ฌ์ ์์ผ๋ก ๊ฐ๋ฅ์ฑ ์๋ ์ํธ๋ฅผ ๋ชจ๋ ์ถ๋ ฅํ๋ค.
ํ์ด
๋ฐฑํธ๋ํน ๋ฌธ์
// ํ์ด : https://whkakrkr.tistory.com
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int l,c;
char code[15];
vector<char> v;
bool isRight() {
int bowl=0, consonant=0;
for(int i=0; i<l; i++) {
char m = code[i];
if(m=='a' || m=='e' || m=='i' || m=='o' || m=='u') {
bowl++;
} else {
consonant++;
}
}
return bowl>=1 && consonant>=2;
}
void recur(int k, int cur) {
if(k==l) {
if(!isRight()) {
return;
}
for(int i=0; i<l; i++) {
cout << code[i];
}
cout << "\n";
return;
}
for(int i=cur; i<c; i++) {
code[k] = v[i];
recur(k+1, i+1);
}
}
int main() {
char tmp;
cin >> l >> c;
for(int i=0; i<c; i++) {
cin >> tmp;
v.push_back(tmp);
}
sort(v.begin(), v.end());
recur(0,0);
}
'๐๏ธ ICPC Sinchon > Backtracking' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[BOJ][C++] ๋ฐฑ์ค 9997๋ฒ: ํฐํธ (0) | 2024.10.16 |
---|---|
[BOJ][C++] ๋ฐฑ์ค 1497๋ฒ: ๊ธฐํ์ฝ์ํธ (0) | 2024.08.17 |
[BOJ][C++] ๋ฐฑ์ค 14888๋ฒ: ์ฐ์ฐ์ ๋ผ์๋ฃ๊ธฐ (0) | 2023.07.06 |
[BOJ][C++] ๋ฐฑ์ค 15811๋ฒ: ๋ณต๋ฉด์ฐ?! (0) | 2023.01.22 |
[BOJ][C++] ๋ฐฑ์ค 2661๋ฒ: ์ข์์์ด (0) | 2023.01.22 |