์์์ ์๊ด O ๋ฝ๋๋ค๋ฉด >> ์์ด
์์์ ์๊ด X ๋ฝ๋๋ค๋ฉด >> ์กฐํฉ
์์๋ฅผ ์ฌ๋ฐฐ์นํ์ฌ ...
~ํ ์์์ ๊ฒฝ์ฐ max ๊ฐ์ ๊ตฌํ์์ค ๋ฑ๋ฑ์ ๋ฌธ์ >> ์์ด !
* ์์ด ํจ์
next_permutation(์ค๋ฆ์ฐจ์)
prev_permutation(๋ด๋ฆผ์ฐจ์)
* ์์ ์ฝ๋
#include <bits/stdc++.h>
using namespace std;
int main() {
int a[] = {1,2,3};
do{
for(int i : a) cout << i << " ";
cout << "\n";
} while(next_permutation(&a[0], &a[0] + 3)); // from, to
return 0;
}
๊ฒฐ๊ณผ
1 2 3
1 3 2
2 1 3
2 3 1
3 1 2
3 2 1
#include <bits/stdc++.h>
using namespace std;
int main() {
int a[] = {1,2,3};
do{
for(int i : a) cout << i << " ";
cout << "\n";
} while(next_permutation(a, a + 3)); // from, to
return 0;
}
&a[0] ์ด๋ ๊ฒ ์์ฐ๊ณ a ๋ง ์จ๋ ๊ฐ๋ฅํ๋ค.
#include <bits/stdc++.h>
using namespace std;
int main() {
vector<int> a = {2,1,3};
sort(a.begin(), a.end());
do{
for(int i : a) cout << i << " ";
cout << "\n";
} while(next_permutation(a.begin(), a.end())); // from, to
return 0;
}
๋ฒกํฐ์ธ ๊ฒฝ์ฐ begin, end ํจ์๋ฅผ ์ด์ฉํด์ ํธ์ถํ๋ค.
์์์ ๋ ฌ์ด ์๋์ด ์๋ค๋ฉด ๊ทธ ๋ค์ ๊ฒฝ์ฐ์ ์๋ถํฐ ๊ตฌํด์ง๋ฏ๋ก ์์ดํจ์ ์ฌ์ฉ ์ ์ ์ ๋ ฌ์ ๊ผญ ํด์ผ ํ๋ค.
* ์กฐํฉ
[์กฐํฉ ๊ฒฝ์ฐ์ ์ ๊ฐ์๊ตฌํ๋ ๊ณต์]
[๊ตฌํ๋ฐฉ๋ฒ]
1) ์ฌ๊ทํจ์(4๊ฐ ์ด์ ๋ฝ์ ๋ ์ถ์ฒ) ์๊ธฐโ โ โ โ โ
#include <iostream>
#include <vector>
using namespace std;
int n = 5, k = 3, a[5] = { 1, 2, 3, 4, 5 }; // 5C3
void print(vector<int> v) {
for (int i : v) cout << a[i] << " ";
cout << "\n";
}
void combi(int start, vector<int> v) {
if (v.size() == k) {
print(v);
return;
}
for (int i = start + 1; i < n; i++) {
v.push_back(i);
combi(i, v);
v.pop_back();
}
return;
}
int main() {
vector<int> v;
combi(-1, v);
return 0;
}
2) ์ค์ฒฉ for๋ฌธ(3๊ฐ ์ดํ๋ก ๋ฝ์ ๋ ์ถ์ฒ. ๊ตฌํ์ด ๊ฐ๋จํจ.)
'๐ Coding Test Study > C++' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[10์ฃผ ์์ฑ C++ ์ฝ๋ฉํ ์คํธ] ํ์๊ฐ๋ - ๋ฉ๋ชจ๋ฆฌ์ ํฌ์ธํฐ(pointer) (0) | 2023.08.05 |
---|---|
[10์ฃผ ์์ฑ C++ ์ฝ๋ฉํ ์คํธ] ๋ฌธ์์ด ํ์๊ฐ๋ - split(), substr(), erase() (0) | 2023.08.05 |
[10์ฃผ ์์ฑ C++ ์ฝ๋ฉํ ์คํธ] ํ์๊ฐ๋ - ์ฌ๊ทํจ์(Recursion) (0) | 2023.08.03 |
[Algorithm][C++] BFS/DFS (0) | 2023.04.25 |
[C++][Programmers][์์ ํ์] ์์์ฐพ๊ธฐ (0) | 2023.04.23 |