๊ด€๋ฆฌ ๋ฉ”๋‰ด

๐Ÿฆ• ๊ณต๋ฃก์ด ๋˜์ž!

[์ˆœ์—ด] Swap์„ ์ด์šฉํ•œ ์ˆœ์—ด ๋ณธ๋ฌธ

Development/CodingTest

[์ˆœ์—ด] Swap์„ ์ด์šฉํ•œ ์ˆœ์—ด

Kirok Kim 2021. 12. 23. 20:52
๋ฐฐ์—ด์˜ ์ฒซ ๊ฐ’๋ถ€ํ„ฐ ์ˆœ์„œ๋Œ€๋กœ ํ•˜๋‚˜์”ฉ ๋ฐ”๊พธ๋ฉฐ ๋ชจ๋“  ๊ฐ’์„ ํ•œ ๋ฒˆ์”ฉ swap
depth๋ฅผ ๊ธฐ์ค€ ์ธ๋ฑ์Šค๋กœ ํ•˜์—ฌ depth๋ณด๋‹ค ์ธ๋ฑ์Šค๊ฐ€ ์ž‘์€ ๊ฐ’๋“ค์„
๊ทธ๋Œ€๋กœ ๊ณ ์ •ํ•˜๊ณ  depth๋ณด๋‹ค ์ธ๋ฑ์Šค๊ฐ€ ํฐ ๊ฐ’๋“ค๋งŒ ๊ฐ€์ง€๊ณ  ๋‹ค์‹œ swap

์ˆœ์„œ๊ฐ€ ๋ณด์žฅ๋˜์ง€ ์•Š์Œ ๋งˆ์ง€๋ง‰ 321,312 ๋ถ€๋ถ„

public class Permutation {
    public static void main(String[] args) {
        int n = 3;
        int[] arr = {1, 2, 3};
        int[] output = new int[n];
       //boolean[] visited = new boolean[n];
       // visited๋ฅผ ์ด์šฉํ•œ ์ˆœ์—ด์—์„œ ์„ค๋ช…์˜ˆ์ •
       // perm(arr, output, visited, 0, n, 3);
       // System.out.println();
        permutation(arr, 0, n, 3);
    }
// ์ˆœ์„œ ์—†์ด n ๊ฐœ์ค‘์—์„œ r ๊ฐœ๋ฅผ ๋ฝ‘๋Š” ๊ฒฝ์šฐ
// ์‚ฌ์šฉ ์˜ˆ์‹œ: permutation(arr, 0, n, 3);
static void permutation(int[] arr, int depth, int n, int r) {
    if (depth == r) {
        print(arr, r);// 3๊ฐœ ๋ฝ‘์„ ๋•Œ ์ถœ๋ ฅ
        return;
    }
 
    for (int i=depth; i<n; i++) {
        swap(arr, depth, i); // ์—ฌ๊ธฐ์„œ ์‹ค์งˆ์ ์œผ๋กœ ๋ฐ”๋€Œ์–ด์ง
				
        permutation(arr, depth + 1, n, r); //์žฌ๊ท€ ํ•จ์ˆ˜ ํ˜ธ์ถœ
				
        swap(arr, depth, i); // ๋ฐ”๊พผ ๊ฒƒ์„ ์› ์œ„์น˜
    }
}
	 
static void swap(int[] arr, int depth, int i) { // ์œ„์น˜ ๋ฐ”๊พธ๋Š” ๋ฉ”์†Œ๋“œ
    int temp = arr[depth]; // ์›๋ž˜ ์žˆ๋˜ ์ˆซ์ž ์ž„์‹œ ๋ณ€์ˆ˜์— ์ €์žฅ
    arr[depth] = arr[i];   // depth๊ฐ€ 1์ด๊ณ  i๊ฐ€ 2์ผ๋•Œ ์ฒ˜์Œ ๋ฐ”๋€œ
    arr[i] = temp;         // ์ž๋ฆฌ๋ฅผ ๋ฐ”๊ฟˆ 
    
}

static void print(int[] arr, int r) { // ์ถœ๋ ฅ ๋ฉ”์†Œ๋“œ
        for (int i = 0; i < r; i++)
            System.out.print(arr[i] + " ");
        System.out.println();
    }
}
//๊ฒฐ๊ณผ
//๊ทธ๋ฆผ๊ณผ ๊ฐ™์Œ
1 2 3 // ๊ทธ๋Œ€๋กœ ์ถœ๋ ฅ
1 3 2 // ๋ ์ž๋ฆฌ ๋’ค๋ฐ”๊ฟ”์„œ ์ถœ๋ ฅ
2 1 3 // ์ฒซ ์ž๋ฆฌ์™€ ๋‘๋ฒˆ์งธ ์ž๋ฆฌ ๋ฐ”๊พธ๊ณ  ์ถœ๋ ฅ
2 3 1 // ๋ ์ž๋ฆฌ ๋’ค๋ฐ”๊ฟ”์„œ ์ถœ๋ ฅ
3 2 1 // ์ฒซ ์ž๋ฆฌ์™€ ๋‘๋ฒˆ์งธ ์ž๋ฆฌ ๋ฐ”๊พธ๊ณ  ์ถœ๋ ฅ
3 1 2 // ๋ ์ž๋ฆฌ ๋’ค๋ฐ”๊ฟ”์„œ ์ถœ๋ ฅ

 

์ถœ์ฒ˜ : https://bcp0109.tistory.com/14

 

์ˆœ์—ด Permutation (Java)

์ˆœ์—ด ์—ฐ์Šต ๋ฌธ์ œ ์ˆœ์—ด์ด๋ž€ n  ๊ฐœ์˜ ๊ฐ’ ์ค‘์—์„œ r  ๊ฐœ์˜ ์ˆซ์ž๋ฅผ ๋ชจ๋“  ์ˆœ์„œ๋Œ€๋กœ ๋ฝ‘๋Š” ๊ฒฝ์šฐ๋ฅผ ๋งํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด [1, 2, 3]  ์ด๋ผ๋Š” 3 ๊ฐœ์˜ ๋ฐฐ์—ด์—์„œ 2 ๊ฐœ์˜ ์ˆซ์ž๋ฅผ ๋ฝ‘๋Š” ๊ฒฝ์šฐ๋Š” [1, 2] [1, 3] [2, 1] [2, 3] [3,

bcp0109.tistory.com

 

๋ฐ˜์‘ํ˜•
Comments