๋ฐฑ์ค 15649: N๊ณผ M (1)
https://www.acmicpc.net/problem/15649
-> N๊ณผ M์ ์ ๋ ฅ๋ฐ๋๋ค
-> N๊ฐ์ ์ซ์ ์ค์ M๊ฐ๋ฅผ ๋ฝ์ ๋ฐฐ์ดํ๋ค.
๋ฌธ์ ์ ์ ๊ทผ์กฐ์ฐจ ํ๊ธฐ๊ฐ ์ด๋ ค์ ๋ค.
์ฒ์์๋ while๋ฌธ์ ์ฐ๋ ๊ฑด๊ฐ ํ๋๋ฐ ๊ทธ๊ฒ๋ ์๋๊ณ , ์์ฒญ ๊ณ ๋ฏผํ๋ค๊ฐ ๊ตฌ๊ธ๋งํ๋ค.
๊ฒฐ๋ก ์ ๋ฐฑํธ๋ํน!
์ด ๋ฌธ์ ๋ DFS๋ฅผ ํตํด ๋ฐฑํธ๋ํน์ ํด์ฃผ๋ฉด ํด๊ฒฐ๋๋ ๋ฌธ์ ๋ผ๊ณ ํ๋๋ฐ,
๋ฌธ์ ๋ ๋ฐฑํธ๋ํน๋, DFS๋ ์ฒ์ ๋ค์ด๋ดค๋ค.
- DFS(๊น์ด ์ฐ์ ํ์)
: ๊ฐ๋ฅํ ๋ชจ๋ ๊ฒฝ๋ก(ํ๋ณด)๋ฅผ ํ์ํ๋ค.
-> ์ฌ๊ทํจ์๋ ์คํ์ผ๋ก ๊ตฌํํ๋ค
-> ๋ ธ๋ ๋ฐฉ๋ฌธ ์ ๋ฐฉ๋ฌธ์ฌ๋ถ๋ฅผ ๋ฐ๋์ ๊ฒ์ฌํด์ผํจ // ์๋๋ฉด ๋ฌดํ๋ฃจํ์ ๋น ์ง ์ ์์
[์ฐธ๊ณ ] https://better-tomorrow.tistory.com/entry/DFS-BFS-%EC%9D%B4%ED%95%B4%ED%95%98%EA%B8%B0
- ๋ฐฑํธ๋ํน
: DFS(๊น์ด ์ฐ์ ํ์)๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ๋ ์๊ณ ๋ฆฌ์ฆ์ผ๋ก, DFS์ ๊ตฌ์กฐ๋ฅผ ์ ์ฉํ ์ ์๋ ๋ฌธ์ ์ ์ ์ฉ๋ ์ ์๋ค.
-> ํ๋ณดํด์ ์งํฉ์์ ์ต์ ํด ์งํฉ์ ์ฐพ์๋ด๋ ๋ฌธ์ ์ ์ฌ์ฉ๋ ์ ์๋ค
*ํ๋ณดํด : ํด๊ฐ ๋ ๊ฐ๋ฅ์ฑ์ด ์๋ ๋ชจ๋ ์กฐํฉ
*์ต์ ํด : ๋ฌธ์ ์์ ์ ํ๋ ๋ต์ผ๋ก์์ ๊ธฐ์ค์ ๋ง์กฑํ๋ ํด
-> ๋ฐฑํธ๋ํน ์๊ณ ๋ฆฌ์ฆ์ ํต์ฌ์ ํํ๋ค '๊ฐ์ง์น๊ธฐ'๋ผ๊ณ ๋ค ํ๋ค.
๊ฐ์ง์น๊ธฐ๋ ๋ง์ ๋ฐฑํธ๋ํน์ด ํธ๋ฆฌ ๊ตฌ์กฐ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ๊ธฐ ๋๋ฌธ์ ํธ๋ฆฌ(๋๋ฌด)์์ ์ ์ด์ ์กฐ๊ฑด์ ๋ง์ง์๋ ๋ ธ๋๋ ๊ฐ์ง๋ฅผ ์ณ๋ฒ๋ฆฌ์(๋ ์ด์ DFS๋ก ๊น์ด ํ์์ ์งํํ์ง ๋ง์)๋ ๋ป์ด๋ค. ์ฝ๊ฒ ๋งํด DFS + ์กฐ๊ฑด๋ฌธ์ธ ์ ์ด๋ค.
[์ฐธ๊ณ ] https://pangtrue.tistory.com/71
https://devyoseph.tistory.com/161?category=972355
+) ๋ฐฑํธ๋ํน ๋ฌธ์ : https://www.acmicpc.net/problem/9663
๊ฐ๋ ์ ์์๋ ๋ฐ๋ก ํ๋ฆฌ์ง๋ ์์๋ค..
์ค์ค๋ก ์์ฉํด๋ณด๋ ค๊ณ ๋ ธ๋ ฅํ๋ค๊ฐ ์๋๊ธธ๋ ์ผ๋จ์ ๊ตฌ๊ธ๋งํด์ ์ฝ๋ ๋ถ์ํด๋ดค๋ค!
์ด๋ฒ ๋ฌธ์ ๋ ํนํ๋ ๊ทธ๋ฅ ๋์ด๊ฐ์ง ๋ง๊ณ ๋ฐฑํธ๋ํน,DFS ๋ฌธ์ ๋ค์ ๋ ํ์ด๋ด์ผ ๋ ๊ฒ ๊ฐ๋ค.
์ฝ๊ฐ ๋ง๋งํ์ง๋ง ๊ทธ๋๋ ๊ณ์ ๋ณด๋ค๋ณด๋ฉด ์ธ์ ๊ฐ๋ ์ต์ํด์ง๊ฒ ์ง~~
// [์ฐธ๊ณ ] https://tooo1.tistory.com/191
#include <iostream>
using namespace std;
#define MAX 9
int N, M;
int arr[MAX];
bool visited[MAX];
void dfs(int k) {
if (k == M) {
for (auto i = 0; i < M; i++) {
cout << arr[i] << " ";
}
cout << "\n";
}
else {
for (auto i = 1; i <= N; i++) {
if (!visited[i]) {
visited[i] = true;
arr[k] = i;
dfs(k + 1);
visited[i] = false;
}
}
}
}
int main() {
cin >> N >> M;
dfs(0);
}
- k๋ ํ์ฌ ์์น , M์ ๋ชฉํ ์์น
- ๋ชฉํ์ ๋๋ฌํ๋ค๋ฉด -> arr์ ์ ์ฅํ ๊ฐ M๊ฐ ๋งํผ ์ถ๋ ฅ
- ๋ชฉํ์ ๋๋ฌํ์ง ์์์ ๋
-> ๋ฐฉ๋ฌธ ์ํ์ ๊ฒฝ์ฐ (!visited[i]) : ๋ฐฉ๋ฌธ ํ์ ํ i๊ฐ์ arr์ ์ ์ฅ / k+1๋ก ๋ค์ด๊ฐ์ ๋ฐฑํธ๋ํน ์ค์ !
๊ตฌ๊ธ๋งํ ์ฝ๋๋ผ์ ์๋ฒฝํ๊ฒ ์ดํด๋ฅผ ํ์ง๋ ๋ชปํ์ง๋ง, ๊ฐ๋ ์ ๋ค์ ์ดํดํ๊ณ ์ค์ค๋ก ์์ฉํด์
๋ค์์ ๋ณต์ตํ ๋์๋ ๋ด๊ฐ ์ฒ์๋ถํฐ ๋๊น์ง ์ฝ๋ ์์ฑํด์ ๋ค์ ํ ๊ฒ์ด๋ค!