맨날 헷갈리는거.. 정리좀 해놓자.
순열 ->
1. visit 필요
2. for문은 0부터 시작
3. for문 안에 재귀를 부를때 인자는 인자로 들어온 cnt+1 로 돈다.
조합
1.visit 필요없음
2. for문 안에는 cnt로부터 시작
3. for문 안에 재귀를 부를 때는 for문 인덱스인 i + 1로 돈다!!
순열 : 인자 : 3개 + visit 배열
void permutation(string origin,string str,int depth){
if(str.size()==depth){
cout<< str <<" \n";
int big =stoi(str);
return;
}
for(int i=0;i<origin.size();i++){
if(visit[i]) continue;
visit[i]=true;
string newst = str+origin[i];
permutation(origin,newst,depth);
visit[i]=false;
}
}
string solution(string number, int k) {
permutation(number,"",k);
return "good";
}
핵심로직 :
for(int i=0;i<origin.size();i++){
if(visit[i]) continue;
visit[i]=true;
string newst = str+origin[i];
permutation(origin,newst,depth);
visit[i]=false;
}
for 문 : 0 부터 기존 size까지 . visit 쓰기.
--- 조합 :
필요 인자 : 4개
기존, 담길거, 인덱스용, depth용
void johab(string origin,string str,int idx,int depth){
if(str.size()==depth){
cout<< str <<" \n";
return;
}
for(int i=idx;i<origin.size();i++){
string newst = str+origin[i];
johab(origin,newst,i+1,depth);
}
}
주의점 :
밑에 for 문의 i = idx,
johab의 인자로도 i 를 넣는다!!
'코테공부' 카테고리의 다른 글
| 다익스트라 알고리즘 (0) | 2022.11.04 |
|---|---|
| 난쟁이마을 c++ (0) | 2022.09.20 |
| stringstream (1) | 2022.09.19 |
| erase, substr.. (0) | 2022.09.02 |
| 프로그래머스 입국심사 c++ (0) | 2022.09.01 |