MapleStory Finger Point Cute Line Smiley Blinking Hello Kitty Angel MapleStory Finger Point

x

หšโ‚Šโœฉโ€งโ‚Š ์ž๋ฃŒ๊ตฌ์กฐ ์ •๋ฆฌ #์•Œ๊ณ ๋ฆฌ์ฆ˜ หšโ‚Šโœฉโ€งโ‚Š

HYEJU01 2024. 4. 8. 01:41

โ–ถํ

๐Ÿ”Ž๊ฒ€์ƒ‰
์ˆœ์ฐจ ๊ฒ€์ƒ‰ =์„ ํ˜• ๊ฒ€์ƒ‰
์ด์ง„ ๊ฒ€์ƒ‰ = ์ด๋ถ„ ๊ฒ€์ƒ‰ = ๋ณด๊ฐ„ ๊ฒ€์ƒ‰
โ–ถํŠธ๋ฆฌ
ํŠธ๋ฆฌ ์šฉ์–ด
์ด์ง„ํŠธ๋ฆฌ
์ผ๋ฐ˜ํŠธ๋ฆฌ → ์ด์ง„ํŠธ๋ฆฌ
์ด์ง„ํŠธ๋ฆฌ ์ข…๋ฅ˜
์™„์ „ ์ด์ง„ ํŠธ๋ฆฌ
ํฌํ™” ์ด์ง„ ํŠธ๋ฆฌ
ํŽธํ–ฅ ์ด์ง„ํŠธ๋ฆฌ
ํž™
MAX HEAP = ์ตœ๋Œ€ ํžˆํ”„
MIN HEAP = ์ตœ์†Œ ํžˆํ”„
ํž™ ์‚ฝ์ž… ์—ฐ์‚ฐ
ํž™ ์‚ญ์ œ ์—ฐ์‚ฐ
์ด์ง„ํŠธ๋ฆฌ ๊ตฌํ˜„
๋ฐฐ์—ด
๋ฆฌ์ŠคํŠธ (ํฌ์ธํ„ฐ)
๐Ÿ”Ž์ด์ง„ ํŠธ๋ฆฌ ์ˆœํšŒ (D L R)
์ „์œ„ ์ˆœํšŒ preorder
์ค‘์œ„ ์ˆœํšŒ inorder
ํ›„์œ„ ์ˆœํšŒ postorder
์ค‘์œ„ ํ‘œ๊ธฐ์‹ (์ค‘์œ„ ์ˆœํšŒ)
ํ›„์œ„ ํ‘œ๊ธฐ์‹ (ํ›„์œ„ ์ˆœํšŒ)
์‘์šฉ ํ”„๋กœ๊ทธ๋žจ :: ํŒŒ์ผ (ํ›„์œ„ ์ˆœํšŒ)
๐Ÿ”Ž ์ด์ง„ ํƒ์ƒ‰ ํŠธ๋ฆฌ
ํƒ์ƒ‰ ์—ฐ์‚ฐ
์‚ฝ์ž… ์—ฐ์‚ฐ
์‚ญ์ œ ์—ฐ์‚ฐ

๐Ÿ”Ž์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜
๋ฒ„๋ธ”์ •๋ ฌ
์‚ฝ์ž…์ •๋ ฌ
์„ ํƒ์ •๋ ฌ
๋ณ‘ํ•ฉ์ •๋ ฌ
ํ€ต์ •๋ ฌ
ํž™์ •๋ ฌ
์ตœ๋Œ€ํžˆํ”„ : ์›์†Œ์˜ ๊ฐœ์ˆ˜ ๋งŒํผ ์‚ญ์ œ ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ•˜์—ฌ ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌ
์ตœ์†Œํžˆํ”„ : ์›์†Œ์˜ ๊ฐœ์ˆ˜ ๋งŒํผ ์‚ญ์ œ ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ•˜์—ฌ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌ
โ–ถํ•˜๋…ธ์ดํƒ‘ (FOR๋ฌธ ๋ณ€๊ฒฝ)
โ–ถ๊ทธ๋ž˜ํ”„
๊ทธ๋ž˜ํ”„ ์ •์˜
๋ฌด๋ฐฉํ–ฅ ๊ทธ๋ž˜ํ”„
๋ฐฉํ–ฅ ๊ทธ๋ž˜ํ”„
1-1. ์ธ์ ‘ํ–‰๋ ฌ
1-2.ํฌ์†Œํ–‰๋ ฌ
2. ์ธ์ ‘๋ฆฌ์ŠคํŠธ
3.์ธ์ ‘๋ฐฐ์—ด
๐Ÿ”Ž๊ทธ๋ž˜ํ”„ ์ˆœํšŒ
1. DFS ๊นŠ์ด์šฐ์„ ํƒ์ƒ‰ (์Šคํƒ) /์œ„ → ์•„๋ž˜
2. BFS ๋„ˆ๋น„์šฐ์„ ํƒ์ƒ‰ (ํ) /์ขŒ → ์šฐ
๐Ÿ”Ž์‹ ์žฅํŠธ๋ฆฌ
์‹ ์žฅํŠธ๋ฆฌ
์ตœ์†Œ ์‹ ์žฅ ํŠธ๋ฆฌ
1. ์ฟ ๋ฅด์Šค์นผ ์•Œ๊ณ ๋ฆฌ์ฆ˜(1,๋‚ด๋ฆผ์ฐจ์ˆœ)
1-2) ์ฟ ๋ฅด์Šค์นผ ์•Œ๊ณ ๋ฆฌ์ฆ˜ (2 ์˜ค๋ฆ„์ฐจ์ˆœ0
2. ํ”„๋ฆผ ์•Œ๊ณ ๋ฆฌ์ฆ˜

 

     

    โ–ถํ

     

    ๐Ÿ”Ž๊ฒ€์ƒ‰

     

    ์ˆœ์ฐจ ๊ฒ€์ƒ‰ =์„ ํ˜• ๊ฒ€์ƒ‰

     

    ์ผ๋ ฌ๋กœ ๋œ ์ž๋ฃŒ๋ฅผ ์ฒ˜์Œ๋ถ€ํ„ฐ ๋งˆ์ง€๋ง‰๊นŒ์ง€ ์ˆœ์„œ๋Œ€๋กœ ๊ฒ€์ƒ‰ํ•˜๋Š” ๋ฐฉ๋ฒ•

    ๋ฐฐ์—ด, ์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ๋กœ ๊ตฌํ˜„๋œ ์ˆœ์ฐจ ์ž๋ฃŒ๊ตฌ์กฐ์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๊ฒ€์ƒ‰

    ๋น„ํšจ์œจ์ ์ด์ง€๋งŒ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ๊ตฌํ˜„์ด ์‰ฌ์›€

     

    ์ฒซ๋ฒˆ์งธ ์›์†Œ๋ถ€ํ„ฐ ๋งˆ์ง€๋ง‰ ์›์†Œ๊นŒ์ง€ ์ˆœ์„œ๋Œ€๋กœ ํ‚ค๊ฐ€ ์ผ์น˜ํ•˜๋Š” ์›์†Œ๊ฐ€ ์žˆ๋Š”์ง€ ๋น„๊ตํ•˜๋ฉฐ ์ฐพ์Œ

     

    • ์ •๋ ฌ๋˜์ง€ ์•Š์€ ์ž๋ฃŒ

    ํ•˜๋‚˜ํ•˜๋‚˜ ์ˆœ์„œ๋Œ€๋กœ ๊ฐ™์€ ๊ฐ’์ด ์žˆ๋Š”์ง€ ๋น„๊ตํ•ด๋‚˜๊ฐ€๋ฉด ๋จ

     

     

    • ์ •๋ ฌ๋œ ์ž๋ฃŒ

    ํ‚ค ๊ฐ’๋ณด๋‹ค ํฌ๋ฉด ๋”์ด์ƒ ์—†๋Š” ๊ฒƒ์ด๋ฏ€๋กœ ๊ฒ€์ƒ‰ ์‹คํŒจ๋ฅผ ๋น ๋ฅด๊ฒŒ ์•Œ ์ˆ˜ ์žˆ์Œ

    Copy
    #include <stdio.h>
    typedef int element;
    
     //์ •๋ ฌ๋˜์ง€ ์•Š์€ ์ž๋ฃŒ 
    
    void sequentialSearch1(element a[], int n, int key) {
    	int i = 0;
    	printf("\n %d๋ฅผ ๊ฒ€์ƒ‰ํ•˜๋ผ! ->> ", key);
    	while (i<n && a[i] != key) i++;
    	if (i<n) printf("%d ๋ฒˆ์งธ์— ๊ฒ€์ƒ‰ ์„ฑ๊ณต! \n\n", i + 1);
    	else   printf("%d๋ฒˆ์งธ์— ๊ฒ€์ƒ‰ ์‹คํŒจ! \n\n", i + 1);
    }
    
    void main() {
    	element a[] = { 8, 30, 1, 9, 11, 19, 2 };
    	int n = 7;
    
    	sequentialSearch1(a, n, 9);  // ๋ฐฐ์—ด a์˜ n๊ฐœ ์›์†Œ ์ค‘์—์„œ ํƒ์ƒ‰ํ‚ค๊ฐ€ 9์ธ ์›์†Œ ๊ฒ€์ƒ‰
    	sequentialSearch1(a, n, 6);  // ๋ฐฐ์—ด a์˜ n๊ฐœ ์›์†Œ ์ค‘์—์„œ ํƒ์ƒ‰ํ‚ค๊ฐ€ 6์ธ ์›์†Œ ๊ฒ€์ƒ‰
    
    	getchar();
    }
    Copy
    #include <stdio.h>
    typedef int element; 
    
    // ์ •๋ ฌ๋œ ์ž๋ฃŒ = ํ‰๊ท  ๋น„๊ต ํšŸ์ˆ˜๊ฐ€ ๋ฐ˜์œผ๋กœ ์ค„์–ด๋“ฌ ( ์ด๋ฏธ ์ •๋ ฌ์ด ๋˜์–ด์žˆ์Œ)
    
    void sequentialSearch2(element a[], int n, element key) {
    	int i = 0;
    	printf("\n %d๋ฅผ ๊ฒ€์ƒ‰ํ•˜๋ผ! ->> ", key);
    	while (a[i] < key) 
    		 i++; 
    	if (a[i] == key)  printf("%d๋ฒˆ์งธ์— ๊ฒ€์ƒ‰ ์„ฑ๊ณต!\n\n", i + 1); //์ฐพ์€๊ฒฝ์šฐ
    	else  printf("%d๋ฒˆ์งธ์— ๊ฒ€์ƒ‰ ์‹คํŒจ! \n\n", i + 1); // ํฐ ๊ฒฝ์šฐ = ๊ฐ™์€ ๊ฒฝ์šฐ๊ฐ€ ์—†์Œ
    }
    
    void main() {
    	element a[] = { 1, 2, 8, 9, 11, 19, 29 };
    	int n = 7;
    
    	sequentialSearch2(a, n, 9); // ๋ฐฐ์—ด a์˜ n๊ฐœ ์›์†Œ ์ค‘์—์„œ ํƒ์ƒ‰ํ‚ค๊ฐ€ 9์ธ ์›์†Œ ๊ฒ€์ƒ‰
    	sequentialSearch2(a, n, 6); // ๋ฐฐ์—ด a์˜ n๊ฐœ ์›์†Œ ์ค‘์—์„œ ํƒ์ƒ‰ํ‚ค๊ฐ€ 6์ธ ์›์†Œ ๊ฒ€์ƒ‰
    
    	getchar();
    }

     

    Copy
    //๊ณตํ†ต์œผ๋กœ ์ž…๋ ฅํ•œ ๊ฐ’ ์žˆ๋Š”์ง€ ์ฐพ๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜
    
    #include <stdio.h>
    #define MAX 10
    
    
    int main() {
    	
    	int a, b;
    	int u, d;
    	int UP[MAX], DN[MAX];
    
    	printf("์ฒซ๋ฒˆ์งธ ์ค„ ์ž…๋ ฅ ๋ฐ์ดํ„ฐ ์ˆ˜ : ");
    	scanf_s("%d", &u);
    	printf("์ฒซ๋ฒˆ์งธ ์ค„ ๋ฐ์ดํ„ฐ %d ๊ฐœ ์ž…๋ ฅ: ", u);
    	for (a = 0; a < u; a++) {
    		scanf_s("%d", &UP[a]);
    	}
    
    	printf("๋‘๋ฒˆ์งธ ์ค„ ์ž…๋ ฅ ๋ฐ์ดํ„ฐ ์ˆ˜ : ");
    	scanf_s("%d", &d);
    	printf("์ฒซ๋ฒˆ์งธ ์ค„ ๋ฐ์ดํ„ฐ %d ๊ฐœ ์ž…๋ ฅ: ", d);
    	for (b = 0; b < d; b++) {
    		scanf_s("%d", &DN[b]);
    	}
    
    	for (b = 0; b < d; b++) {
    		for (a = 0; a < u; a++) {
    			if (UP[a] == DN[b])
    				printf(" %d ๊ณตํ†ต์œผ๋กœ ์žˆ์Œ \n", UP[a]); //๊ฐ’ ๋„ฃ์„๊ฒƒ
    		}
    	}
    	return 0;
    }
    Copy
    //๊ณผ์ œ[]
    
    #include <stdio.h>
    #define MAX 10
    
    Search(int u, int d);
    
    int main() {
    
    	int u, d;
    
    	printf("์ฒซ๋ฒˆ์งธ ์ค„ ์ž…๋ ฅ ๋ฐ์ดํ„ฐ ์ˆ˜ : ");
    	scanf_s("%d", &u);
    
    	printf("๋‘๋ฒˆ์งธ ์ค„ ์ž…๋ ฅ ๋ฐ์ดํ„ฐ ์ˆ˜ : ");
    	scanf_s("%d", &d);
    
    	Search(u, d);
    
    	return 0;
    }
    
    Search(int u, int d) // (1) ํ•จ์ˆ˜ ํ˜ธ์ถœ ์‹์œผ๋กœ ๋ฐ”๊พธ๊ธฐ 
    {
    	int a;
    	int b;
    	int UP[MAX], DN[MAX];
    	
    	printf("์ฒซ๋ฒˆ์งธ ์ค„ ๋ฐ์ดํ„ฐ %d ๊ฐœ ์ž…๋ ฅ: ", u);
    	for (a = 0; a < u; a++) {
    		scanf_s("%d", &UP[a]);
    	}
    
    	printf("๋‘๋ฒˆ์งธ ์ค„ ๋ฐ์ดํ„ฐ %d ๊ฐœ ์ž…๋ ฅ: ", d);
    	for (b = 0; b < d; b++) {
    		scanf_s("%d", &DN[b]);
    	}
    
    	for (b = 0; b < d; b++) {
    		for (a = 0; a < u; a++) {
    			if (UP[a] == DN[b])
    				printf("UP[%d]์™€ DN[%d]์— %d์ด ๊ณตํ†ต์œผ๋กœ ์žˆ์Œ \n",a,b,UP[a]);
    //(2) UP์€ ์ฒซ๋ฒˆ์งธ ์ค„, DN ๋‘๋ฒˆ์งธ ์ค„ ์ธ๋ฑ์Šค ์ถœ๋ ฅํ•˜๊ธฐ
    		}
    	}
    
    
    }

     

    ์ด์ง„ ๊ฒ€์ƒ‰ = ์ด๋ถ„ ๊ฒ€์ƒ‰ = ๋ณด๊ฐ„ ๊ฒ€์ƒ‰

     

    ์ •๋ ฌ๋œ ์ž๋ฃŒ์— ๋Œ€ํ•ด์„œ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒ€์ƒ‰ ๋ฐฉ๋ฒ•

    ์ค‘๊ฐ„์— ์žˆ๋Š” ๊ฐ’์„ ๊ธฐ์ค€์œผ๋กœ ์žก๊ณ 

    ์ฐพ์„ ๊ฐ’ / ๊ธฐ์ค€๊ฐ’ ๋น„๊ต ( ํฌ๋ฉด ์˜ค๋ฅธ์ชฝ, ์ž‘์œผ๋ฉด ์™ผ์ชฝ ) → ๊ณ„์†ํ•ด์„œ ๊ธฐ์ค€๊ฐ’ ๋ณ€๊ฒฝํ•ด๊ฐ.

    ๊ธฐ์ค€๊ฐ’ :: ๋ฐฐ์—ด์˜ ์ค‘๊ฐ„์— ์žˆ๋Š” ๊ฐ’ == // middle ← (begin + end / 2)

     

     

    ** ์žฌ๊ท€ํ•จ์ˆ˜, ์ˆœํ•œ๋ฌธ ๋‘๊ฐ€์ง€ ํ˜•ํƒœ ์ฝ”๋“œ ์žˆ์Œ

     

    โ–ถํŠธ๋ฆฌ

    • ์‚ฌ์ดํด์ด ์žˆ์Œ

    ํŠธ๋ฆฌ ์šฉ์–ด

     

    ์ด์ง„ํŠธ๋ฆฌ

    ์ผ๋ฐ˜ํŠธ๋ฆฌ → ์ด์ง„ํŠธ๋ฆฌ

     

    ์ด์ง„ํŠธ๋ฆฌ ์ข…๋ฅ˜

    ์™„์ „ ์ด์ง„ ํŠธ๋ฆฌ

    • ๋…ธ๋“œ ์œ„์น˜๊ฐ€ ํฌํ™” ์ด์ง„ํŠธ๋ฆฌ์—์„œ ๋…ธ๋“œ 1~n๊นŒ์ง€์˜ ์œ„์น˜์™€ ์™„์ „ํžˆ ์ผ์น˜ํ•˜๋Š” ์ด์ง„ํŠธ๋ฆฌ

    ํฌํ™” ์ด์ง„ ํŠธ๋ฆฌ

    • ๋ชจ๋“  ๋ ˆ๋ฒจ์— ๋…ธ๋“œ๊ฐ€ ํฌํ™” ์ƒํƒœ๋กœ ์ฐจ ์žˆ์Œ

    ํŽธํ–ฅ ์ด์ง„ํŠธ๋ฆฌ

    • ๋ชจ๋“  ๋…ธ๋“œ๊ฐ€ ์™ผ์ชฝ or ์˜ค๋ฅธ์ชฝ ์ค‘ ํ•œ ๋ฐฉํ–ฅ์œผ๋กœ๋งŒ ์„œ๋ธŒํŠธ๋ฆฌ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ํŠธ๋ฆฌ

     

    ํž™

    • ์™„์ „ ์ด์ง„ ํŠธ๋ฆฌ์— ์žˆ๋Š” ๋…ธ๋“œ ์ค‘์—์„œ ํ‚ค ๊ฐ’์ด ๊ฐ€์žฅ ํฐ, ๊ฐ€์žฅ ์ž‘์€ ๋…ธ๋“œ๋ฅผ ์ฐพ๊ธฐ ์œ„ํ•ด์„œ ๋งŒ๋“  ์ž๋ฃŒ๊ตฌ์กฐ

    MAX HEAP = ์ตœ๋Œ€ ํžˆํ”„

    • ๋ฃจํŠธ ๋…ธ๋“œ(ํ‚ค๊ฐ’)๊ฐ€ ๊ฐ€์žฅ ํผ

    MIN HEAP = ์ตœ์†Œ ํžˆํ”„

    • ๋ฃจํŠธ ๋…ธ๋“œ(ํ‚ค๊ฐ’)๊ฐ€ ๊ฐ€์žฅ ์ž‘์Œ

    ํž™ ์‚ฝ์ž… ์—ฐ์‚ฐ

    • ๋…ธ๋“œ๋ฅผ ํ™•์žฅ์‹œํ‚ด
    • ํ˜„์žฌ ์œ„์น˜์—์„œ ๋ถ€๋ชจ๋…ธ๋“œ์™€์˜ ๊ฐ’ ํฌ๊ธฐ๋ฅผ ๋น„๊ตํ•จ
    • ๊ตํ™˜ํ•˜๊ฑฐ๋‚˜ ํ•ด์„œ ์ž๋ฆฌ ํ™•์ •์‹œํ‚ด

    ํž™ ์‚ญ์ œ ์—ฐ์‚ฐ

    • ๋ฃจํŠธ ๋…ธ๋“œ์˜ ์›์†Œ๋งŒ ์‚ญ์ œ ๊ฐ€๋Šฅํ•จ
    • ์™„์ „ ์ด์ง„ ํŠธ๋ฆฌ๋ฅผ ์œ ์ง€ํ•ด์•ผ๋˜๊ธฐ ๋•Œ๋ฌธ์— ๋งˆ์ง€๋ง‰๋…ธ๋“œ n๋ฒˆ ๋…ธ๋“œ๋ฅผ ์‚ญ์ œ
    • ๋ฃจํŠธ ๋…ธ๋“œ์— ์ž„์‹œ ์ €์žฅ ํ•œ ํ›„ ์ œ์ž๋ฆฌ๋ฅผ ์ฐพ์•„๊ฐ€๋ฉด ๋จ

     

    ์ด์ง„ํŠธ๋ฆฌ ๊ตฌํ˜„

    ๋ฐฐ์—ด

    ๋ฆฌ์ŠคํŠธ (ํฌ์ธํ„ฐ)

     

    ๐Ÿ”Ž์ด์ง„ ํŠธ๋ฆฌ ์ˆœํšŒ (D L R)

    • ๋ชจ๋“  ์›์†Œ๋ฅผ ๋น ํŠธ๋ฆฌ๊ฑฐ๋‚˜ ๋ถ•๋ณตํ•˜์ง€ ์•Š๊ณ  ์ฒ˜๋ฆฌํ•˜๋Š” ์—ฐ์‚ฐ
    • ๋ฃจํŠธ ๋ฐฉ๋ฌธ ์‹œ๊ธฐ์— ๋”ฐ๋ผ ๊ตฌ๋ถ„๋จ

    ์ „์œ„ ์ˆœํšŒ preorder

    • ๋ฃจํŠธ ๋…ธ๋“œ๋ฅผ ๋จผ์ € ๋ฐฉ๋ฌธ

    ์ค‘์œ„ ์ˆœํšŒ inorder

    • ๋ฃจํŠธ ๋…ธ๋“œ๋ฅผ ์ค‘๊ฐ„์— ๋ฐฉ๋ฌธ

    ํ›„์œ„ ์ˆœํšŒ postorder

    • ๋ฃจํŠธ ๋…ธ๋“œ๋ฅผ ๋งˆ์ง€๋ง‰์— ๋ฐฉ๋ฌธ

     

    ์ค‘์œ„ ํ‘œ๊ธฐ์‹ (์ค‘์œ„ ์ˆœํšŒ)

    ํ›„์œ„ ํ‘œ๊ธฐ์‹ (ํ›„์œ„ ์ˆœํšŒ)

    ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ :: ํŒŒ์ผ (ํ›„์œ„ ์ˆœํšŒ)

    • ํ›„์œ„ ์ˆœํšŒ ํ•˜๋ฉด์„œ ํด๋” ์šฉ๋Ÿ‰์„ ๊ณ„์‚ฐํ•จ
    Copy
    #include <stdio.h>
    #include <stdlib.h>
    #include <memory.h>
    
    typedef struct treeNode {	// ํŠธ๋ฆฌ์˜ ๋…ธ๋“œ ๊ตฌ์กฐ ์ •์˜
    	int size;				// ๋ฐ์ดํ„ฐ ํ•„๋“œ
    	struct treeNode* left;	// ์™ผ์ชฝ ์„œ๋ธŒ ํŠธ๋ฆฌ์— ๋Œ€ํ•œ ๋งํฌ ํ•„๋“œ
    	struct treeNode* right;	// ์˜ค๋ฅธ์ชฝ ์„œ๋ธŒ ํŠธ๋ฆฌ์— ๋Œ€ํ•œ ๋งํฌ ํ•„๋“œ
    } treeNode;
    
    int AmountSize = 0;
    
    // size๋ฅผ ๋ฃจํŠธ ๋…ธ๋“œ์˜ ๋ฐ์ดํ„ฐ ํ•„๋“œ๋กœ ํ•˜์—ฌ ์™ผ์ชฝ๊ณผ ์˜ค๋ฅธ์ชฝ ์„œ๋ธŒ ํŠธ๋ฆฌ๋ฅผ ์—ฐ๊ฒฐํ•˜๋Š” ์—ฐ์‚ฐ
    treeNode* makeRootNode(int size, treeNode* leftNode, treeNode* rightNode) {
    	treeNode* root = (treeNode*)malloc(sizeof(treeNode));
    	root->size = size;
    	root->left = leftNode;
    	root->right = rightNode;
    	return root;
    }
    
    // ๊ฐ ํด๋” ํฌ๊ธฐ๋ฅผ ๊ณ„์‚ฐํ•˜๊ธฐ ์œ„ํ•œ ํ›„์œ„ ์ˆœํšŒ ์—ฐ์‚ฐ
    int postorder_AmountSize(treeNode* root) {
    	if (root) {
    		postorder_AmountSize(root->left);
    		postorder_AmountSize(root->right);
    		AmountSize += root->size;
    	}
    	return AmountSize;
    }
    
    void main() {
    	treeNode* F11 = makeRootNode(50, NULL, NULL);
    	treeNode* F10 = makeRootNode(40, NULL, NULL);
    	treeNode* F9 = makeRootNode(45, NULL, NULL);
    	treeNode* F8 = makeRootNode(30, NULL, NULL);
    	treeNode* F7 = makeRootNode(0, NULL, NULL);
    	treeNode* F6 = makeRootNode(65, F10, F11);
    	treeNode* F5 = makeRootNode(100, NULL, NULL);
    	treeNode* F4 = makeRootNode(0, F8, F9);
    	treeNode* F3 = makeRootNode(0, F6, F7);
    	treeNode* F2 = makeRootNode(0, F4, F5);
    	treeNode* F1 = makeRootNode(0, F2, F3);
    
    	printf("\n\n ๊ณตํ•™๊ณ„์—ด ๋ชจ๊ธˆ์•ก : %d M \n", postorder_AmountSize(F2));
    
    	AmountSize = 0;
    	printf("\n ์ž์—ฐ๊ณ„์—ด ๋ชจ๊ธˆ์•ก : %d M \n", postorder_AmountSize(F3));
    
    	AmountSize = 0;
    	printf("\n ํ•™๊ณผ ์ „์ฒด ๋ชจ๊ธˆ์•ก : %d M \n", postorder_AmountSize(F1));
    
    	getchar();
    }

    ๐Ÿ”Ž ์ด์ง„ ํƒ์ƒ‰ ํŠธ๋ฆฌ

    • ์›์†Œ์˜ ํฌ๊ธฐ์— ๋”ฐ๋ผ ๋…ธ๋“œ ์œ„์น˜๋ฅผ ์ •์˜ ํ•œ ๊ฒƒ

    ์„œ๋กœ ๋‹ค๋ฅธ ์œ ์ผํ•œ ํ‚ค๋ฅผ ๊ฐ€์ง

    R ๋Š” ๋ฃจํŠธ ํ‚ค๋ณด๋‹ค ์ž‘์Œ

    L์€ ๋ฃจํŠธ ํ‚ค ๋ณด๋‹ค ์ปค์•ผ๋จ

    • ์™ผ์ชฝ < ๋ฃจํŠธ < ์˜ค๋ฅธ์ชฝ

    ํƒ์ƒ‰ ์—ฐ์‚ฐ

    • ๋ฃจํŠธ์—์„œ ์‹œ์ž‘
    • ํƒ์ƒ‰ํ•  ํ‚ค ๊ฐ’ ↔ ๋ฃจํŠธ๋…ธ๋“œ ํ‚ค๊ฐ’ ๋น„๊ต
    • ํ‚ค๊ฐ’ = ๋ฃจํŠธ๋…ธ๋“œํ‚ค๊ฐ’ : ํƒ์ƒ‰์—ฐ์‚ฐ์„ฑ๊ณต
    • ํ‚ค๊ฐ’ < ๋ฃจํŠธ๋…ธ๋“œํ‚ค๊ฐ’ ์™ผ์ชฝ ์„œ๋ธŒํŠธ๋ฆฌ๋กœ ํƒ์ƒ‰์—ฐ์‚ฐ์ˆ˜ํ–‰
    • ํ‚ค๊ฐ’ > ๋ฃจํŠธ๋…ธ๋“œํ‚ค๊ฐ’ ์˜ค๋ฅธ์ชฝ ์„œ๋ธŒํŠธ๋ฆฌ๋กœ ํƒ์ƒ‰์—ฐ์‚ฐ์ˆ˜ํ–‰

    ์‚ฝ์ž… ์—ฐ์‚ฐ

    • ํƒ์ƒ‰ ์—ฐ์‚ฐ ์ˆ˜ํ–‰ํ•ด์•ผ๋จ
    • ์‚ฝ์ž… ํ•  ์›์†Œ๋ž‘ ๊ฐ™์€ ์›์†Œ๊ฐ€ ์žˆ์œผ๋ฉด ์‚ฝ์ž… ๋ถˆ๊ฐ€๋Šฅํ•จ
    • ํƒ์ƒ‰์ˆ˜ํ–‰์ด ์‹คํŒจ๋˜๋Š” ๊ทธ ์ž๋ฆฌ์— ์›์†Œ๋ฅผ ์‚ฝ์ž…ํ•จ

    ์‚ญ์ œ ์—ฐ์‚ฐ

    • ํƒ์ƒ‰์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ (์‚ญ์ œ ๋…ธ๋“œ ์œ„์น˜๋ฅผ ์•Œ์•„์•ผํ•จ)
    • ํƒ์ƒ‰ํ•˜์—ฌ ์ฐพ์€ ๋…ธ๋“œ๋ฅผ ์‚ญ์ œํ•จ
    • ์ด์ œ ํ›„์†์ฒ˜๋ฆฌ๋ฅผ ํ•ด์ค˜์•ผ๋จ (์ด์ง„ ํƒ์ƒ‰ ํŠธ๋ฆฌ ์œ ์ง€ํ•ด์ค˜์•ผ๋จ)
    1. ๋‹จ๋ง๋…ธ๋“œ (์ฐจ์ˆ˜=0)
    2. ์ž์‹ ๋…ธ๋“œ ํ•œ๊ฐœ
    • ๋ถ€๋ชจ๋…ธ๋“œ ์ž๋ฆฌ๋ฅผ ์ž์‹๋…ธ๋“œ์—๊ฒŒ ๋ฌผ๋ ค์ค€๋‹ค
    1. ์ž์‹ ๋…ธ๋“œ ๋‘๊ฐœ
    • ๋ถ€๋ชจ๋…ธ๋“œ ์ž๋ฆฌ๋ฅผ ์ž์‹๋…ธ๋“œ์—๊ฒŒ ๋ฌผ๋ ค์ค€๋‹ค
    • ํ›„๊ณ„์ž ์„ ํƒ๋ฐฉ๋ฒ• :

    ์‚ญ์ œ ๋…ธ๋“œ์— ์œ„์น˜ํ•ด์•ผํ•  ๊ฐ’์€ ์™ผ์ชฝ ์„œ๋ธŒ ํŠธ๋ฆฌ์— ์žˆ๋Š” ๋…ธ๋“œ๋“ค์˜ ๊ฐ’๋ณด๋‹ค ์ปค์•ผํ•˜๊ณ , ์˜ค๋ฅธ์ชฝ ์„œ๋ธŒ ํŠธ๋ฆฌ์— ์žˆ๋Š” ๋…ธ๋“œ๋“ค์˜ ํ‚ค๊ฐ’๋ณด๋‹ค๋Š” ์ž‘์•„์•ผํ•œ๋‹ค.

    ์ถœ์ฒ˜:

    [์€์ ธ๋ฏธ]

    1. ์™ผ์ชฝ ์„œ๋ธŒํŠธ๋ฆฌ : ๊ฐ€์žฅ ํฐ ์ž์†๋…ธ๋“œ ์„ ํƒ
    2. ์˜ค๋ฅธ์ชฝ ์„œ๋ธŒํŠธ๋ฆฌ : ๊ฐ€์ž‘ ์ž‘์€ ์ž์†๋…ธ๋“œ ์„ ํƒ

     

     

    ๐Ÿ”Ž์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜

    • ๋ฐ์ดํ„ฐ๋ฅผ ์ผ์ •ํ•œ ๊ทœ์น™์— ๋”ฐ๋ผ ๋‹ค์‹œ ๋‚˜์—ดํ•˜๋Š” ๊ฒƒ

    ๋ฒ„๋ธ”์ •๋ ฌ

    • ์ธ์ ‘ํ•œ ๋‘๊ฐœ์”ฉ ๋น„๊ตํ•œ๋‹ค.

    ์‚ฝ์ž…์ •๋ ฌ

    • ๋ฏธ์ •๋ ฌ ์ฒซ๋ฒˆ์งธ๋ฅผ ์ •๋ ฌ๋œ ๊ณณ๊ณผ ๋น„๊ต

    ์„ ํƒ์ •๋ ฌ

    • ๋ฏธ์ •๋ ฌ ๋œ ๊ณณ์—์„œ ์„ ํƒ ํ›„ ๋ฏธ์ •๋ ฌ ๋œ ์ฒซ๋ฒˆ์งธ ์™€ ๊ตํ™˜

    ๋ณ‘ํ•ฉ์ •๋ ฌ

    • ๋ฐฐ์—ด์„ ๋‘ ๊ฐœ๋กœ ์ชผ๊ฐœ์„œ (์ตœ์†Œ ๋‹จ์œ„ 1๊ฐœ๋กœ ๋ถ„ํ• ) ์ •๋ ฌํ•œ ๋’ค ๋‹ค์‹œ ๋ณ‘ํ•ฉํ•˜๋Š” ์ž‘์—…
    • *๋ถ„ํ• ์ •๋ณต๋ฐฉ๋ฒ•
    • ๋ถ„ํ•  → ์ •๋ณต → ๊ฒฐํ•ฉ
    • ๋ณ‘ํ•ฉ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ถ„์„ํ•จ

    ํ€ต์ •๋ ฌ

    ๊ธฐ์ค€ ๊ฐ’ (ํ”ผ๋ฒ—)์„ ์ค‘์‹ฌ์œผ๋กœ ์™ผ์ชฝ ๋ถ€๋ถ„ ์ง‘ํ•ฉ๊ณผ ์˜ค๋ฅธ์ชฝ ๋ถ€๋ถ„ ์ง‘ํ•ฉ์œผ๋กœ ๋ถ„ํ•  ํ•˜์—ฌ ์ •๋ ฌ

    • ๋ถ„ํ•  → ์ •๋ณต
    • ๊ฐ€์šด๋ฐ ์›์†Œ๋ฅผ ํ”ผ๋ด‡์œผ๋กœ ์ •ํ•œ๋‹ค.
    • L : → / ํ”ผ๋ด‡๋ณด๋‹ค ํฌ๊ฑฐ๋‚˜ ๊ฐ™์€ ์›์†Œ ์ฐพ๊ธฐ
    • R : ← / ํ”ผ๋ด‡๋ณด๋‹ค ์ž‘์€ ์›์†Œ ์ฐพ๊ธฐ ( ํ”ผ๋ฒ—์„ ๋„˜์–ด ๊ฐˆ ์ˆ˜ ์žˆ์Œ)
    • LR์ด ๋งŒ๋‚˜๊ธฐ ์ „์— ์กฐ๊ฑด์ด ์ถฉ์กฑ๋˜๋ฉด ๊ฐ๊ฐ ์›์†Œ๋ผ๋ฆฌ ๊ตํ™˜ํ•จ (ํ”ผ๋ฒ—์ด ์„ค์ •๋œ ๊ฑด ์•„๋‹˜)
    • LR์ด ๋งŒ๋‚˜ ์ง„ํ–‰๋˜์ง€ ์•Š์œผ๋ฉด ๊ทธ ์›์†Œ์™€ ํ”ผ๋ด‡์„ ๊ตํ™˜ํ•จ
    • ๋ชจ๋“  ๋ถ€๋ถ„ ์ง‘ํ•ฉ์˜ ํฌ๊ธฐ๊ฐ€ 1 ์ดํ•˜๊ฐ€ ๋˜๋ฉด ์ „์ฒด ํ€ต ์ •๋ ฌ์„ ์ข…๋ฃŒํ•จ
    • ใ……

    ํž™์ •๋ ฌ

    • ํžˆํ”„์—์„œ๋Š” ๊ฐ€์žฅ ํฐ ์›์†Œ๊ฐ€ ๋ฃจํŠธ ๋…ธ๋“œ๊ฐ€ ๋œ๋‹ค. ์‚ญ์ œ ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ•˜๋ฉด ํ•ญ์ƒ ๋ฃจํŠธ ๋…ธ๋“œ์˜ ์›์†Œ๋ฅผ ์‚ญ์ œํ•˜์—ฌ ๋ฐ˜ํ™˜ (์‚ญ์ œ์—ฐ์‚ฐ )

    ์ตœ๋Œ€ํžˆํ”„ : ์›์†Œ์˜ ๊ฐœ์ˆ˜ ๋งŒํผ ์‚ญ์ œ ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ•˜์—ฌ ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌ

    1. ์‚ฝ์ž… ์—ฐ์‚ฐ์„ ์ด์šฉํ•ด์„œ ์ตœ๋Œ€ํžˆํ”„ ๊ตฌ์„ฑ
    2. ์‚ญ์ œ ์—ฐ์‚ฐ์„ ํ†ตํ•ด์„œ ๋ฉ”๋ชจ๋ฆฌ์— ๋‹ค์‹œ ์ •๋ ฌ ใ„น

    ์ตœ์†Œํžˆํ”„ : ์›์†Œ์˜ ๊ฐœ์ˆ˜ ๋งŒํผ ์‚ญ์ œ ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ•˜์—ฌ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌ

    โ–ถํ•˜๋…ธ์ดํƒ‘ (FOR๋ฌธ ๋ณ€๊ฒฝ)

    Copy
    #include <stdio.h>
    
    
    int n, start, work, target;
    
    void hanoi_01(int n, int start, int work, int target);
    void hanoi_02(int n, int start, int target, int work);
    void hanoi_03(int n, int work, int start, int target);
    
    int main()
    {
    	start = 'A';
    	work = 'B';
    	target = 'C';
    
    	for (int n = 3; n > 0; n--) {
    		if (n == 1) hanoi_01( n,  start,  work,  target);
    		else if (n == 3 ) hanoi_02(n - 1, start, target, work);
    		else hanoi_03(n - 1, work, start, target);
    	}
    }
    
    
    void hanoi_01(int n, int start, int work, int target) {
    	printf("%c์—์„œ ์›๋ฐ˜ %d๋ฅผ %c๋กœ ์˜ฎ๊น€ \n", start, n, target);
    }
    
    void hanoi_02(int n, int start, int target, int work) {
    	//printf("%c์—์„œ ์›๋ฐ˜ %d๋ฅผ %c๋กœ ์˜ฎ๊น€ \n", start, n, target);
    }
    
    void hanoi_03(int n, int work, int start, int target) {
    	//printf("%c์—์„œ ์›๋ฐ˜ %d๋ฅผ %c๋กœ ์˜ฎ๊น€ \n", start, n, target);
    }
    
    

     

     

     

    โ–ถ๊ทธ๋ž˜ํ”„

    • ์‚ฌ์ดํด์ด ์—†์Œ

    ๊ทธ๋ž˜ํ”„ ์ •์˜

    • ํ˜„์ƒ์ด๋‚˜ ์‚ฌ๋ฌผ์„ ์ •์  + ๊ฐ„์„ ์œผ๋กœ ํ‘œํ˜„ํ•œ ๊ฒƒ
    • Graph G = (V, E)
    • ์ธ์ ‘ํžŒ๋‹ค : ๋‘ ์ •์ ์ด ๊ฐ„์„ ์œผ๋กœ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๋Š” ์ƒํƒœ

    ๋ฌด๋ฐฉํ–ฅ ๊ทธ๋ž˜ํ”„

    • ๋ฐฉํ–ฅ์ด ์—†๋Š” ๊ทธ๋ž˜ํ”„

    ๋ฐฉํ–ฅ ๊ทธ๋ž˜ํ”„

    • ๋ฐฉํ–ฅ์ด ์žˆ๋Š” ๊ทธ๋ž˜ํ”„
    • ์ง„์ž…์ฐจ์ˆ˜, ์ง„์ถœ์ฐจ์ˆ˜

    1-1. ์ธ์ ‘ํ–‰๋ ฌ

    • 2์ฐจ์› ๋ฐฐ์—ด๋กœ ํ‘œํ˜„ํ•จ

    1-2.ํฌ์†Œํ–‰๋ ฌ

    ๋Œ€๋ถ€๋ถ„์˜ ๊ฐ’์ด 0์ธ ๊ฒฝ์šฐ

     

    2. ์ธ์ ‘๋ฆฌ์ŠคํŠธ

    • ์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ๋ฅผ ์ด์šฉํ•ด ํ‘œํ˜„ํ•จ

    3.์ธ์ ‘๋ฐฐ์—ด

     

    ๐Ÿ”Ž๊ทธ๋ž˜ํ”„ ์ˆœํšŒ

    • ๋ชจ๋“  ์ •์ ์— ๋ฐฉ๋ฌธํ•˜๋Š” ๊ฒƒ

    1. DFS ๊นŠ์ด์šฐ์„ ํƒ์ƒ‰ (์Šคํƒ) /์œ„ → ์•„๋ž˜

    • ์ตœ๋Œ€ํ•œ ๊นŠ์ด ํƒ์ƒ‰ํ•˜๋‹ค๊ฐ€ ๊ฐˆ ๊ณณ ์ด ์—†์œผ๋ฉด ๊ฐˆ๋ฆผ๊ธธ ๊ฐ„์„ ์œผ๋กœ ๋˜๋Œ์•„์™€์„œ ๋‹ค๋ฅธ ๋ฐฉํ–ฅ์œผ๋กœ ํƒ์ƒ‰์„ ๊ณ„์† ๋ฐ˜๋ณตํ•œ๋‹ค.
    • ๊ฐ€์žฅ ๋งˆ์ง€๋ง‰์— ๋งŒ๋‚œ ๊ฐˆ๋ฆผ๊ธธ ๊ฐ„์„ ์œผ๋กœ ๋Œ์•„๊ฐ€์•ผ๋˜๊ธฐ๋•Œ๋ฌธ์— ํ›„์ž… ์„ ์ถœ์˜ ์Šคํƒ ์‚ฌ์šฉ

    2. BFS ๋„ˆ๋น„์šฐ์„ ํƒ์ƒ‰ (ํ) /์ขŒ → ์šฐ

    • ์ •์ ๊ณผ ์ธ์ ‘ํ•œ ์ •์  ์ค‘์— ๋ฐฉ๋ฌธํ•˜์ง€ ์•Š์€ ์ •์ ์„ ์ฐจ๋ก€๋Œ€๋กœ ๋ฐฉ๋ฌธํ•จ ์ด ๊ณผ์ •์„ ๊ณ„์† ๋ฐ˜๋ณต

     

    ๐Ÿ”Ž์‹ ์žฅํŠธ๋ฆฌ

    ์‹ ์žฅํŠธ๋ฆฌ

    • ๊ฐ€์ค‘ ๋ฌด๋ฐฉํ–ฅ ๊ทธ๋ž˜ํ”„์—์„œ ๋ชจ๋“  ์ •์ ์„ ํฌํ•จํ•˜๋Š” ์—ฐ๊ฒฐ๋œ ํŠธ๋ฆฌ
    • ์ •์ ์ด n๊ฐœ๋ฉด ๊ฐ„์„ ์€ n-1๊ฐœ ์กด์žฌ

    ์ตœ์†Œ ์‹ ์žฅ ํŠธ๋ฆฌ

    • ์‹ ์žฅ ํŠธ๋ฆฌ ์ค‘์—์„œ ๊ฐ„์„ ์˜ ๊ฐ€์ค‘์น˜ ํ•ฉ์ด ๊ฐ€์žฅ ์ž‘์€ ํŠธ๋ฆฌ
    • ์กฐ๊ฑด : ๋ฌด๋ฐฉํ–ฅ ์—ฐ๊ฒฐ ๊ทธ๋ž˜ํ”„
    • ํŠธ๋ฆฌ : ์‚ฌ์ดํด์ด ์—†๋Š” ์—ฐ๊ฒฐ ๊ทธ๋ž˜ํ”„

    1. ์ฟ ๋ฅด์Šค์นผ ์•Œ๊ณ ๋ฆฌ์ฆ˜(1,๋‚ด๋ฆผ์ฐจ์ˆœ)

    • ๋‚ด๋ฆผ์ฐจ์ˆœ or ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌ๋ถ€ํ„ฐ ์‹œ์ž‘
    • ๊ฐ€์ค‘์น˜๊ฐ€ ๊ฐ€์žฅ ๋†’์€ ๊ฐ„์„ ์„ ์ œ๊ฑฐํ•œ๋‹ค.
    • ์‚ฌ์ดํด์„ ๋งŒ๋“ค์ง€ ์•Š์œผ๋ฉด์„œ ์ถ”๊ฐ€

    1-2) ์ฟ ๋ฅด์Šค์นผ ์•Œ๊ณ ๋ฆฌ์ฆ˜ (2 ์˜ค๋ฆ„์ฐจ์ˆœ0

    • ๋‚ด๋ฆผ์ฐจ์ˆœ or ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌ๋ถ€ํ„ฐ ์‹œ์ž‘
    • ๊ฐ€์ค‘์น˜๊ฐ€ ๊ฐ€์žฅ ์ž‘์€ ๊ฐ„์„ ๋ถ€ํ„ฐ ์„ ํƒ
    • ์‚ฌ์ดํด์„ ๋งŒ๋“ค์ง€ ์•Š์œผ๋ฉด์„œ ์ถ”๊ฐ€

    2. ํ”„๋ฆผ ์•Œ๊ณ ๋ฆฌ์ฆ˜

    • ๊ฐ„์„  ์ •๋ ฌํ•˜์ง€ ์•Š๊ณ  ์‹œ์ž‘
    • ์ •์ ์—์„œ ์‹œ์ž‘ํ•˜์—ฌ (๋ณธ์ธ์ด ์„ ํƒ)
    • ์„ ํƒํ•œ ์ •์ ์— ๋ถ€์†๋œ ๋ชจ๋“  ๊ฐ„์„  ์ค‘ ๊ฐ€์ค‘์น˜๊ฐ€ ๊ฐ€์žฅ ๋‚ฎ์€ ๊ฐ„์„ ์„ ์—ฐ๊ฒฐํ•ด์„œ ํŠธ๋ฆฌ๋ฅผ ํ™•์žฅ