2023. 12. 11. 14:56ใ์ธํ๋ฐ/์๋ฐ ์๊ณ ๋ฆฌ์ฆ ๋ฌธ์ ํ์ด ์ ๋ฌธ : ์ฝ๋ฉํ ์คํธ ๋๋น
https://hyejin.tistory.com/1277
-> ์ด์ ๋ฌธ์ ํ์ด
4. ์ค๋ณต์์ด ๊ตฌํ๊ธฐ
์ค๋ช
1๋ถํฐ N๊น์ง ๋ฒํธ๊ฐ ์ ํ ๊ตฌ์ฌ์ด ์์ต๋๋ค.
์ด ์ค ์ค๋ณต์ ํ๋ฝํ์ฌ M๋ฒ์ ๋ฝ์ ์ผ๋ ฌ๋ก ๋์ด ํ๋ ๋ฐฉ๋ฒ์ ๋ชจ๋ ์ถ๋ ฅํฉ๋๋ค.
์ ๋ ฅ ์ค๋ช
์ฒซ ๋ฒ์งธ ์ค์ ์์ฐ์ N(3<=N<=10)๊ณผ M(2<=M<=N) ์ด ์ฃผ์ด์ง๋๋ค.
์ถ๋ ฅ ์ค๋ช
์ฒซ ๋ฒ์งธ ์ค์ ๊ฒฐ๊ณผ๋ฅผ ์ถ๋ ฅํฉ๋๋ค.
์ถ๋ ฅ์์๋ ์ฌ์ ์์ผ๋ก ์ค๋ฆ์ฐจ์์ผ๋ก ์ถ๋ ฅํฉ๋๋ค.
์ ๋ ฅ ์์ 1
3 2
์ถ๋ ฅ ์์ 1
1 1
1 2
1 3
2 1
2 2
2 3
3 1
3 2
3 3
๋ฌธ์ ํ์ด 1
public class FindingDuplicatePermutations
{
static int n,m;
public void DFS(int val)
{
if (val > n) {
return;
}else {
for (int i = 1; i <= n; i++)
{
System.out.println(val + " " + i);
}
DFS(val + 1);
}
}
public static void main(String[] args)
{
FindingDuplicatePermutations findingDuplicatePermutations = new FindingDuplicatePermutations();
Scanner scanner = new Scanner(System.in);
n = scanner.nextInt();
m = scanner.nextInt();
findingDuplicatePermutations.DFS(1);
}
}
๐ฉ๐ป -> ์.. ใ ใ ์ด๋ ๊ฒ ํ๋ฉด ์๋๋ค,,, 2๋ฒ ๋ฝ์๋๋ ์ถ๋ ฅ ์์ ์ ๋ง๊ฒ ์ถ๋ ฅ๋๊ฒ ์ง๋ง 3๋ฒ ๋ฝ์ ๋๋ถํฐ๋ ์ถ๋ ฅ ์์ ์ ๋ง๊ฒ ์๋๋ค..!!!! ๋ฐ๋ณด ์๋๊ฐ ์ถ๋ค.. ใ
๋ฌธ์ ํ์ด 2
static int[] pm;
static int n, m;
public void DFS(int L)
{
if (L == m) {
for (int i : pm)
{
System.out.print(i + " ");
}
System.out.println();
}else {
for (int i = 1; i <= n; i ++ )
{
pm[L] = i;
DFS(L + 1);
}
}
}
๐พ : ๊ฐ์ฌ๋ ํ์ด์ธ๋ฐ ์ฐ์ pm ์ด๋ผ๋ ๋ฐฐ์ด ํ๋๋ฅผ ์ ์ธํด์ ํ์ด์ผ ํ๋ค.
pm[L] = i; ์ด๋ ๊ฒ ์ ์ธ์ ํด์ฃผ๊ณ , DFS(L+1) ์ ์ฌ๊ท ํจ์๋ก ํธ์ถํ๋ฉด์ ๋ต์ ๊ตฌํด์ผ ํ๋ค.
์ฒ์์๋ ๋๋ ์ดํด๊ฐ ์๋ผ์ ์ง์ ๊ทธ๋ฆผ์ ๊ทธ๋ ค์ ํด๋ณด๋๊น ์ดํด๊ฐ ๋๋ค.
๋ง๋ก ํ์ด๋ณด์๋ฉด...
DFS(0) ์์ ์์์ ํ๋๋ฐ if ์์ 0์ด m ์ด ์๋๊ธฐ ๋๋ฌธ์ ๋ฐ๋ก else ๋ฌธ์ผ๋ก ๋์ด๊ฐ๋ค.
else ๋ฌธ์์ for๋ฌธ์ ๋ค์ด์ค๋๋ฐ i = 1 ์์ pm[0] = 1; ์ ๋ฃ์ด์ฃผ๊ณ , DFS(1) ์ ํธ์ถํ๋ค.
DFS(1) ์์ else ๋ฌธ์ผ๋ก ๋ฐ๋ก ๋์ด์ i = 1์์ pm[1] = 1; ์ ๋ฃ์ด์ฃผ๊ณ , DFS(2) ์ ํธ์ถํ๋ค.
DFS(2)๋ L == m์ ํด๋นํ๋ฏ๋ก pm[0], pm[1] ์ ์ถ๋ ฅํ๊ณ ์ข ๋ฃํ๋ค. -> 1 1
๋ค์ DFS(1) ์ i = 2 ๋ก ๋์ด์์ pm[1] = 2; ์ ๋ฃ์ด์ฃผ๊ณ , ๋ค์ DFS(2)์ ํธ์ถํ๋ค.
DFS(2)๋ L == m์ ํด๋นํ๋ฏ๋ก pm[0], pm[1] ์ ์ถ๋ ฅํ๊ณ ์ข ๋ฃํ๋ค. -> 1 2
DFS(1)์ i = 3์ผ๋ก ๋์ด์์ pm[1] =3; ์ ๋ฃ์ด์ฃผ๊ณ , DFS(2) ์ ํธ์ถํ๋ค.
DFS(2)๋ L == m์ ํด๋นํ๋ฏ๋ก pm[0], pm[1] ์ ์ถ๋ ฅํ๊ณ ์ข ๋ฃํ๋ค. -> 1 3
DFS(0), i=2 ๋ก ๋์ด์์ pm[0] = 2 ๋ฅผ ๋ฃ์ด์ฃผ๊ณ DFS(1) ๋ฅผ ํธ์ถํ๋ค.
DFS(1) i = 1, pm[1] = 1 ๋ฃ์ด์ฃผ๊ณ DFS(2) ๋ฅผ ํธ์ถํ๋ค.
DFS(2) ๋ L == m์ ํด๋นํ๋ฏ๋ก pm[0], pm[1] ์ ์ถ๋ ฅํ๊ณ ์ข ๋ฃํ๋ค. -> 2 1
... ์ด๋ ๊ฒ ๋ฐ๋ณตํด์ฃผ๋ฉด ๋๋ค.