728x90
반응형
조합과 동일하다.
이 곳에서 조건이 있는데 모음은 1개 이상, 자음은 2개 이상이어야 한다.
알파벳이 모음일 경우 모음변수를 하나 증가시키고, 자음일 경우 자음 변수를 하나 증가시킨다.
if(isVowel(realVector[index])){
combination(vowelCount + 1, consonantCount, index + 1, alphaVector, realVector, target - 1);
}
else{
combination(vowelCount, consonantCount + 1, index + 1, alphaVector, realVector, target - 1);
}
target에 도달하고, 조건에 일치할 경우 알파벳 열을 출력하면 된다.
if(vowelCount >= 1 && consonantCount >= 2 && target == 0){
for(int i = 0; i < alphaVector.size(); i++){
cout << alphaVector[i];
}
cout << "\n";
return;
}
전체적인 코드는 이렇다.
// 암호만들기
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
char vowelArray[] = {'a','e','i','o','u'};
bool isVowel(char alpha){
for(int i = 0; i < 5; i++){
if(alpha == vowelArray[i])
return true;
}
return false;
}
void combination(int vowelCount, int consonantCount, int index, vector<char> alphaVector, vector<char> realVector, int target){
if(vowelCount >= 1 && consonantCount >= 2 && target == 0){
for(int i = 0; i < alphaVector.size(); i++){
cout << alphaVector[i];
}
cout << "\n";
return;
}
if(index == realVector.size()){
return;
}
alphaVector.push_back(realVector[index]);
if(isVowel(realVector[index])){
combination(vowelCount + 1, consonantCount, index + 1, alphaVector, realVector, target - 1);
}
else{
combination(vowelCount, consonantCount + 1, index + 1, alphaVector, realVector, target - 1);
}
alphaVector.pop_back();
combination(vowelCount, consonantCount, index + 1, alphaVector, realVector, target);
}
int main(void){
int count, target;
char alpha;
cin >> target >> count;
vector<char>realVector, alphaVector;
for(int i = 0; i < count; i++){
cin >> alpha;
realVector.push_back(alpha);
}
sort(realVector.begin(), realVector.end());
combination(0,0,0,alphaVector,realVector,target);
}
https://github.com/jeongdaeun98/algorithm/blob/master/2020/20102909.cpp
jeongdaeun98/algorithm
백준, 프로그래머스. Contribute to jeongdaeun98/algorithm development by creating an account on GitHub.
github.com
반응형
'algorithm' 카테고리의 다른 글
[algorithm] 백준 - 카드 구매하기 (0) | 2020.11.02 |
---|---|
[algorithm] 백준 - 좋은 수열 (0) | 2020.10.30 |
[algorithm] 백준 - 퇴사 (0) | 2020.10.30 |
[algorithm] 백준 - 연산자 끼워넣기 & 연산자 끼워넣기 2 (0) | 2020.10.30 |
[algorithm] 백준 - 이모티콘 (0) | 2020.10.30 |