1. ๋ฆฌ์คํธ์ ๊ฐ๋
- ๋ฆฌ์คํธ๋ ๋ฐฐ์ด๊ณผ ๋ฌ๋ฆฌ ์์๋ค ๊ฐ์ ๋ ผ๋ฆฌ์ ์ธ ์์๋ฅผ ์ํ ์๋ฃ๊ตฌ์กฐ์ด๋ค.
- ์์๋ค ๊ฐ์ ์์๋ ๋ ผ๋ฆฌ์ ์ผ๋ก(์ถ์์ ์ผ๋ก) ์ง์ผ์ง๋ฉฐ ์์๊ฐ ์ ์ฅ๋๋ ๋ฌผ๋ฆฌ์ ์ธ ์์น๋ ์๊ดํ์ง ์๋๋ค.
- ๋ฐฐ์ด์ ์์ : ๋ฌผ๋ฆฌ์ VS ๋ฆฌ์คํธ์ ์์ : ๋ ผ๋ฆฌ์ =์ถ์์ =์๋ฏธ์
- ๋ฐฐ์ด์ ์ด์ฉํด ๋ฆฌ์คํธ๋ฅผ ๊ตฌํํ๋ฉด ๋ ผ๋ฆฌ์ ์ธ ์์๋ฅผ ์งํค๊ธฐ ์ํด ์์์ ์ด๋์ด ๋ง์์ง๋ค.
- ๋ฐ๋ผ์ ๋ฆฌ์คํธ๋ ์ผ๋ฐ์ ์ผ๋ก ํฌ์ธํฐ ๋ณ์๋ฅผ ์ด์ฉํ ์ฐ๊ฒฐ ๋ฆฌ์คํธ๋ฅผ ์ด์ฉํ๋ค.
- ํฌ์ธํฐ ๋ณ์ : ๋ค์ ์์๋ฅผ ๊ฐ๋ฆฌํค๋ ์์น ์ ์ฅ
- ํฌ์ธํฐ ๋ณ์์ ๋์ ๋ฉ๋ชจ๋ฆฌ ํ ๋น์ ์ด์ฉํด ๋ฉ๋ชจ๋ฆฌ ๋ญ๋น๋ฅผ ๋ง์ ์ ์๋ค.
2. ๋ฐฐ์ด์ ์ด์ฉํ ๋ฆฌ์คํธ์ ๊ตฌํ
์๋ฃ์ ์ฝ์ , ์ญ์ ๊ฐ ๋น๋ฒํ ๋ฐ์ํ๋ ์ํฉ์์ ๋ฆฌ์คํธ๋ฅผ ๋ฐฐ์ด๋ก ๊ตฌํํ๋ ๊ฒ์ ์๋ฃ ์ด๋์ผ๋ก ์ธํด ์ปดํจํ ์ฑ๋ฅ์ ๋นํจ์จ์ ์ ๋ฐํ๋ค.
4๊ฐ์ ์์๋ฅผ ๊ฐ์ง ๋ฆฌ์คํธ (1919, 1936, 1945, 1950, 1988)๋ฅผ ๋ฐฐ์ด๋ก ๊ตฌํํ๋ค๊ณ ๊ฐ์ ํ์.
๋ฐฐ์ด์ ์ด์ฉํ์ฌ ๋ฆฌ์คํธ๋ฅผ ๊ตฌํํ๋ ๋ฐฉ๋ฒ์ ๊ฐ๋จํ๊ฒ ๋ฆฌ์คํธ์ ์์๋ฅผ ์์๋๋ก ๋ฐฐ์ด์ ์ ์ฅํ๋ ๊ฒ์ด๋ค. ๊ฐ๋จํ๋ฉฐ ํฌ์ธํฐ๋ฅผ ์ํ ๋ฉ๋ชจ๋ฆฌ๊ฐ ํ์์๊ธฐ ๋๋ฌธ์ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ ํ์ฉ ํจ์จ์ด ๋๋ค. ํ์ง๋ง ๋ฐฐ์ด์ ํน์ฑ์ผ๋ก ์ธํด ๊ฐ ์์๊ฐ ๋ฉ๋ชจ๋ฆฌ์ ์์ฐจ์ ์ผ๋ก ์ ์ฅ๋ ๊ฒ์ด๋ค. ๋ฐ๋ผ์ ๋ฆฌ์คํธ์ ์ฝ์ , ์ญ์ ์ ๊ฐ์ ๋ณ๋ ๋ฐ์ ์ ๋ง์ ์๊ฐ์ด ๊ฑธ๋ฆฌ๊ฒ ๋๋ค.
๋ฆฌ์คํธ์ '1936'์ด ์ถ๊ฐ๋์ด (1919, 1936, 1945, 1950, 1988)์ด ๋๋ฉด ๋ฐฐ์ด์ ํฌ๊ธฐ๊ฐ ํ์ฅ๋์ด์ผ ํ๋ฉฐ 1945, 1950, 1988์ ํ ์นธ์ฉ ๋ค๋ก ๋ฐ๋ ค๋์ผ ํ๋ค. ์ด๋ ํ๋ก๊ทธ๋๋ฐ์ ๋ฒ๊ฑฐ๋ก์ ๋ฟ๋ง ์๋๋ผ ๋ฆฌ์คํธ์ ๊ด๋ จ๋ ํ๋ก๊ทธ๋จ์ ์คํ ์๊ฐ์๋ ํฐ ์ํฅ์ ๋ฏธ์น๋ค. ๋ง์ผ ๋ฐฐ์ด๋ก ๊ตฌํํ ๋ฆฌ์คํธ์ ์์๊ฐ 2000๊ฐ์ธ๋ฐ ํ๋ก๊ทธ๋จ ์ํ ์ค ๋ฆฌ์คํธ์ ์์๊ฐ ์์์ ๋ ๋ฒ์งธ ์์น์ ์ฝ์ ๋์ด์ผ ํ๋ค๊ณ ๊ฐ์ ํด๋ณด์. ์ด ๊ฒฝ์ฐ 1999๊ฐ์ ์์๋ฅผ ๋ค๋ก ํ ์นธ์ฉ ๋ฐ์ด์ผ ํ๋ค. ์ฝ์ ๋ฟ๋ง ์๋๋ผ ์ญ์ ์์๋ ๊ฐ์ ์ํฉ์ด ๋ฐ์ํ๋ค. ๋๋ฌธ์ ์ค์ IT ์๋น์ค ํ๊ฒฝ์์ ๋ฐฐ์ด์ ์ด์ฉํ ๋ฆฌ์คํธ์ ๊ตฌํ์ ์ ์ฌ์ฉ๋์ง ์๋๋ค.
3. ํฌ์ธํฐ๋ฅผ ์ด์ฉํ ๋ฆฌ์คํธ์ ๊ตฌํ
ํฌ์ธํฐ๋ฅผ ์ด์ฉํด ๊ตฌํ๋ ๋ฆฌ์คํธ๋ฅผ ์ฐ๊ฒฐ ๋ฆฌ์คํธ(linked list)๋ผ๊ณ ํ๋ค.
์ฐ๊ฒฐ ๋ฆฌ์คํธ์๋ ๋ ธ๋(node) ๊ฐ๋ ์ ์ฌ์ฉํ๋ค. ๋ ธ๋๋ ๋ฐ์ดํฐ๋ฅผ ๊ฐ๊ณ ์๋ ๋ฐ์ดํฐ ํ๋์ ๋ฆฌ์คํธ์ ๋ค์ ์์๋ฅผ ๊ฐ๋ฆฌํค๋, ์ฆ ๋ค์ ๋ ธ๋์ ์ฃผ์๋ฅผ ๊ฐ๊ณ ์๋ ๋งํฌ ํ๋(ํฌ์ธํฐ)๋ก ๊ตฌ์ฑ๋๋ค. ์์ ๋ฆฌ์คํธ (1919, 1936, 1945, 1950, 1988)๋ฅผ ํํํ๋ ค๋ฉด 4๊ฐ์ ๋ ธ๋๊ฐ ํ์ํ๋ค.
์์ ๋ฆฌ์คํธ๋ 1919 → 1945 → 1950 → 1998์ ๋ ผ๋ฆฌ์ ์ธ ์์๋ฅผ ๊ฐ๋๋ค. ์ด๋ฅผ ์ฐ๊ฒฐ ๋ฆฌ์คํธ๋ก ํํํ๋ฉด ์ ๊ทธ๋ฆผ๊ณผ ๊ฐ๋ค. ๊ทธ๋ฆผ์ ์ถ์ํํ ์ฐ๊ฒฐ ๋ฆฌ์คํธ์ ํํ์ด๋ฉฐ ๊ฐ ์์๊ฐ ์ ์ฅ๋ ๋ฉ๋ชจ๋ฆฌ์ ๋ฌผ๋ฆฌ์ ์ธ ์ฃผ์๋ ์์์ ์๊ด์์ด ์ ์ฅ๋๋ค.
๋ ธ๋๋ C์ธ์ด์์ struct ๋ฐ์ดํฐ ํ์ ์ผ๋ก ๊ตฌํ๋๋ค. ๋ ธ๋์ ๋ฐ์ดํฐ ํ๋๋ ๋ฆฌ์คํธ์ ์์๊ฐ์ ์ ์ฅํ๊ธฐ ์ํ ๋ถ๋ถ์ผ๋ก ํ์์ ๋ฐ๋ผ ์ฌ๋ฌ ํ๋๋ก ์ด๋ฃจ์ด์ง ์ ์๋ค. ์ฆ ๋ฐ์ดํฐ ํ๋์๋ ์ฌ๋ฌ ์ข ๋ฅ์ ๊ฐ์ด๋ ์ ๋ณด๊ฐ ์ ์ฅ๋ ์ ์๋ค. ๋งํฌ ํ๋๋ ๋ฆฌ์คํธ์์ ๋ค์์ ์ค๋ ๋ฆฌ์คํธ ์์๊ฐ ์ ์ฅ๋์ด ์๋ ๋ ธ๋ ์ฃผ์๋ฅผ ์ ์ฅํ๋ค. ์ด ์ฃผ์๋ฅผ ์ด์ฉํ์ฌ ๋ค์ ์์๋ฅผ ์ฐพ์๊ฐ๋ค. ๋งํฌ ํ๋๋ C์ธ์ด์์ ํฌ์ธํฐ ๋ณ์๋ฅผ ์ด์ฉํ์ฌ ๊ตฌํ๋๋ค.
๋ฆฌ์คํธ์ head ํฌ์ธํฐ ๋ณ์๋ ์ฐ๊ฒฐ ๋ฆฌ์คํธ์ ์์ ๋ ธ๋(๋ฆฌ์คํธ์ ์ฒซ ๋ฒ์งธ ์์)๋ฅผ ๊ฐ๋ฆฌํจ๋ค. ๋ง์ง๋ง ๋ ธ๋๋ฅผ ์ ์ธํ ๋๋จธ์ง ๋ชจ๋ ๋ ธ๋์ ๋งํฌ๋ ๋ ผ๋ฆฌ์ ์ผ๋ก ๋ฐ๋ก ๋ค์์ ์์นํ๋ ๋ ธ๋๋ฅผ ๊ฐ๋ฆฌํค๋ ์ฃผ์๋ฅผ ๊ฐ๋๋ค. ๋ง์ง๋ง ๋ ธ๋์ ๋งํฌ๋ ๋ ์ด์ ๊ฐ๋ฆฌํฌ ๊ฒ์ด ์๋ null ํฌ์ธํฐ๋ก ํํํ๋ค.
4. ํฌ์ธํฐ ๋ณ์์ ๊ตฌ์กฐ์ฒด ๊ทธ๋ฆฌ๊ณ ๋์ ๋ฉ๋ชจ๋ฆฌ ํ ๋น
C์ธ์ด์ ๋ํ ํฌ์คํ ์ด ์๋๋ฏ๋ก ์ฐ๊ฒฐ ๋ฆฌ์คํธ๋ฅผ ๊ตฌํํ๋๋ฐ ํ์ํ ์ ๋์ ๋ด์ฉ๋ง ๋ค๋ฃฌ๋ค.
4-1. ํฌ์ธํฐ ๋ณ์
ํฌ์ธํฐ๋ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์๊ฐ์ ์ ์ฅํ๋ ๋ณ์์ด๋ค. ํฌ์ธํฐ ๋ณ์๋ ๋ฐ์ดํฐ ํ์ ์ ๊ฐ์ง๋ค.
๋ณ์ a๋ int ํ์ ์ ๋ณ์์ด๋ฉฐ ์ ์ 100์ ์ ์ฅํ๋ค. ํฌ์ธํฐ ๋ณ์ b๋ int ํ์ ๋ณ์์ ์ฃผ์๊ฐ์ ์ ์ฅํ ์ ์๋ ์ ์ํ ํฌ์ธํฐ ๋ณ์์ด๋ค. ๊ฐ๊ฐ ff00, ff18 ์ฃผ์์ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ํ ๋น๋ฐ์๋ค๊ณ ๊ฐ์ ํ๋ค. ์ญ์ฐธ์กฐ ์ฐ์ฐ์ &๋ฅผ ์ฌ์ฉํด ๋ณ์ a์ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์ ff00์ ํฌ์ธํฐ ๋ณ์ b์ ํ ๋นํ๋ค.
1
2
3
4
5
6
|
int a = 100;
int *b;
b = &a;
printf("a is %d\n", a); //a is 100
printf("*b is %d\n", *b); //b is 100
|
cs |
๋ณ์ a๊ฐ ์ ์ฅ๋ ์์น์ ์ฃผ์๊ฐ์ ff00์ผ๋ก ๊ฐ์ ํ์๋ค. 6๋ผ์ธ์์ ์ญ์ฐธ์กฐ ์ฐ์ฐ์ *๋ฅผ ์ฌ์ฉํ์ฌ b์ ์ ์ฅ ์์ญ์์ ff00์ ์ถ์ถํ๊ณ ์ถ์ถ๋ ff00์ ์ฃผ์๋ฅผ ์ฐพ์๊ฐ ff00์ ์ ์ฅ๋ ๊ฐ '100'์ ๋ฐํํ๋ค. ๋ฐ๋ผ์ ์ถ๋ ฅ๋ฌธ์์ ๋ ๋ค 100์ด ์ถ๋ ฅ๋๋ค.
1
2
3
4
5
|
int a;
int *p_a;
p_a = &a; //p_a์ ๋ณ์ a์ ์ฃผ์๋ฅผ ์ ์ฅ
a = 100 //a์ 100์ ์ ์ฅ
*p_a = 800 //p_a๊ฐ ๊ฐ๋ฆฌํค๊ณ ์๋ a์ ์ฃผ์๋ฅผ ์ฐพ์๊ฐ์ 800์ ์ ์ฅ
|
cs |
์ญ์ฐธ์กฐ๋ฅผ ํตํด ๊ฐ์ ๋ณ๊ฒฝํ๋ฉด ์ง์ํ๊ณ ์๋ ๋ณ์์ ๊ฐ์ด ๋ฐ๋๋ค. ์ฆ 5๋ผ์ธ์ a = 800;๊ณผ ๋์ผํ๋ค.
4-2. ๊ตฌ์กฐ์ฒด(struct)
๊ตฌ์กฐ์ฒด๋ ๋ค์ํ ๋ฐ์ดํฐํ์ ํ๋์ ๋จ์๋ก ๋ค๋ฃฐ ์ ์๋ค.
1
2
3
4
|
struct linked_list_node {
int data;
struct linked_list_node *link;
}
|
cs |
์ ์ฝ๋๋ ํ๋์ ์ ์๊ฐ๊ณผ ํฌ์ธํฐ๋ฅผ ๊ฐ๋ ๊ตฌ์กฐ์ฒด๋ฅผ ์ ์ํ ๊ฒ์ด๋ค. intํ ๋ฐ์ดํฐ๋ฅผ ๊ฐ๋ ์ฐ๊ฒฐ ๋ฆฌ์คํธ์ ๋ ธ๋๋ฅผ ์ด์ฒ๋ผ ๊ตฌํํ ์ ์๋ค.
4-3. ๋์ ๋ฉ๋ชจ๋ฆฌ ํ ๋น(malloc)
๋ฐฐ์ด์ฒ๋ผ ์คํ ์ ์ ๋ฐฐ์ด ํฌ๊ธฐ๋ฅผ ๊ฒฐ์ ํ๋ฉด ๋ฐฐ์ด์ด ์ค์ ๋ฆฌ์คํธ ์์์ ์ซ์๋ณด๋ค ํฌ๋ฉด ๋ฉ๋ชจ๋ฆฌ ๋ญ๋น๊ฐ, ์์ผ๋ฉด ์คํ ์ค ๋ฌธ์ ๋ฅผ ๋ฐ์์ํจ๋ค. ์ด๋ฌํ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด malloc() ํจ์๋ฅผ ์ด์ฉํด ํ๋ก๊ทธ๋จ ์คํ ์ค์ ๋์ ์ผ๋ก ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ํ ๋น๋ฐ์ ์ ์๋ค. ํ๋ก๊ทธ๋จ ์คํ ์ค์ ๋ฉ๋ชจ๋ฆฌ๊ฐ ์ถ๊ฐ์ ์ผ๋ก ํ์ํ ์์ ์ malloc() ํจ์๋ฅผ ์ฌ์ฉํ๋ฉด ํ์ํ ๋งํผ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ํ ๋น๋ฐ๊ณ ์ด์ ๋ํ ์ฃผ์๊ฐ์ ํฌ์ธํฐ ๋ณ์๋ก ์ ์ฅํด ์ฌ์ฉํ๋ค.
1
2
3
4
5
6
7
8
9
10
|
int a, *p_a;
float b, *p_b;
p_a = (int *)malloc(sizeof(int));
p_b = (float *)malloc(sizeof(float));
*p_a = 10;
*p_b = 3.14;
printf("a is %d, b is %f\n", *p_a, *p_b);
free(p_a);
free(p_b);
|
cs |
3๋ผ์ธ: sizeof(int)๋ intํ ๋ฐ์ดํฐ์ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ ํฌ๊ธฐ๋ฅผ ๋ฐํํ๋ค. malloc(sizeof(int))์ intํ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ ์ ์๋ ํฌ๊ธฐ์ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ํ ๋นํ์ฌ ์ฃผ์๊ฐ์ ๋ฐํํ๋ค. ์ด๋ฅผ ํฌ์ธํฐ ๋ณ์ p_a์ ์ ์ฅํ์ฌ p_a๊ฐ ์ด๋ฅผ ๊ฐ๋ฆฌํจ๋ค.
4๋ผ์ธ: sizeof(float)์ floatํ ๋ฐ์ดํฐ์ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ ํฌ๊ธฐ๋ฅผ ๋ฐํํ๋ค. malloc(sizeof(float))์ floatํ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ ์ ์๋ ํฌ๊ธฐ์ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ํ ๋นํ์ฌ ์ฃผ์๊ฐ์ ๋ฐํํ๋ค. ์ด๋ฅผ ํฌ์ธํฐ ๋ณ์ p_b์ ์ ์ฅํ์ฌ p_a๊ฐ ์ด๋ฅผ ๊ฐ๋ฆฌํจ๋ค.
9,10๋ผ์ธ: free() ํจ์๋ก ํ ๋น๋ฐ์ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ๋ฐํํ๋ค.
ํ๋ก๊ทธ๋จ์ ์ค๊ณํ ๋ ํ์ํ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ์ ํํ๊ฒ ์์ธกํ ์ ์๊ธฐ ๋๋ฌธ์ ์คํ ์ค์ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ ํ ๋น์ด ํ์ํ ์ ์๋ค. ์ด ๋ malloc() ํจ์์ ํฌ์ธํฐ ๋ณ์์ ํ์ฉ์ด ํ์ํ๋ค.
5. ์ฐ๊ฒฐ ๋ฆฌ์คํธ ๋ ธ๋์ ์ฝ์ ๊ณผ ์ญ์
5-1. ์ฐ๊ฒฐ ๋ฆฌ์คํธ ๋ ธ๋ ์ญ์
์ฐ๊ฒฐ ๋ฆฌ์คํธ์ ๋ ธ๋ ์ญ์ ๋ ์ฝ์ ๋ณด๋ค ๊ฐ๋จํ๋ค.
๋ ธ๋๋ฅผ ์ญ์ ํ๋ ค๋ฉด ์ญ์ ๋์ด์ผ ํ ์์๋ฅผ ์๋ ค์ค์ผ ํ๋ค. ์ฌ๊ธฐ์ ์ญ์ ๋์ด์ผ ํ ์์๋ฅผ ํฌ์ธํฐ ๋ณ์ x๋ก ๊ฐ๋ฆฌํจ๋ค๊ณ ๊ฐ์ ํ๋ค. x๋ ธ๋๋ฅผ ์ญ์ ํ๋ ค๋ฉด x์ ์ ํ ๋ ธ๋์ธ i๋ ธ๋๊ฐ ํํ ๋ ธ๋์ธ j๋ ธ๋๋ฅผ ๊ฐ๋ฆฌํค๊ฒ ํด์ผ ํ๋ค. ์ฆ i๋ ธ๋์ ๋งํฌ๊ฐ j๋ฅผ ๊ฐ๋ฆฌํค๊ฒ ํด์ผ ํ๋ค.
100 → 200 → 300์ด์๋ ๋ฆฌ์คํธ๋ ์ด์ 100 → 300 ์์๋ฅผ ๊ฐ์ง๋ค.
์ฐ๊ฒฐ ๋ฆฌ์คํธ์ ๋ ธ๋ ์ญ์ :
โ ์ญ์ ํ ๋ ธ๋์ ์ ํ ๋ ธ๋์ ๋งํฌ๊ฐ ์ญ์ ํ ๋ ธ๋์ ํํ ๋ ธ๋๋ฅผ ๊ฐ๋ฆฌํค๊ฒ ํ๋ค.
โก ์ญ์ ํ ๋ ธ๋๋ฅผ ๋ฉ๋ชจ๋ฆฌ์ ๋ฐํํ๋ค.
5-2. ์ฐ๊ฒฐ ๋ฆฌ์คํธ์ ๋ ธ๋ ์ฝ์
์ฝ์ ์ ํ๋ ค๋ฉด ์ฝ์ ๋ ์์น๋ฅผ ์์์ผ ํ๋ค. ์ฝ์ ๋ ์์น๋ i๋ ธ๋์ ๋ค์ ์์น๋ก, ์ฝ์ ๋ ๋ ธ๋๋ x๋ ธ๋๋ก ๊ฐ์ ํ๋ค. x๋ ธ๋์ ๋งํฌ๊ฐ j๋ ธ๋๋ฅผ ๊ฐ๋ฆฌํค๊ณ i๋ ธ๋์ ๋งํฌ๊ฐ x๋ ธ๋๋ฅผ ๊ฐ๋ฆฌํค๊ฒ ํ๋ค. ์ฐ๊ฒฐ ๋ฆฌ์คํธ์ ์ญ์ ์ ๋ฌ๋ฆฌ ์ฝ์ ์์๋ ๋ ๊ฐ ๋ ธ๋์ ๋งํฌ๋ฅผ ๋ณ๊ฒฝํด์ผ ํ๋ค. ์ด ์์๋ฅผ ์งํค์ง ์๊ณ ๋จผ์ i๋ ธ๋์ ๋งํฌ๊ฐ x๋ ธ๋๋ฅผ ๊ฐ๋ฆฌํค๊ฒ ํ๋ฉด j๋ ธ๋์ ์ฃผ์๋ฅผ ์๊ฒ ๋๋ฏ๋ก ์ฝ์ ํ ๋๋ ์ ๊ท ๋ ธ๋์ ๋งํฌ ๋จผ์ ๋ณ๊ฒฝํด์ผ ํ๋ค.
์ฐ๊ฒฐ ๋ฆฌ์คํธ์ ๋ ธ๋ ์ฝ์ (โก, โข ์์ ์ค์) :
โ ์ฝ์ ํ ๋ ธ๋๋ฅผ ์์ฑํ๋ค.
โก ์ฝ์ ํ ๋ ธ๋์ ๋งํฌ๊ฐ ์ฝ์ ๋ ์์น์ ํํ ๋ ธ๋๋ฅผ ๊ฐ๋ฆฌํค๊ฒ ํ๋ค.
โข ์ฝ์ ๋ ์์น์ ์ ํ ๋ ธ๋์ ๋งํฌ๊ฐ ์ฝ์ ํ ๋ ธ๋๋ฅผ ๊ฐ๋ฆฌํค๊ฒ ํ๋ค.
6. ์ฐ๊ฒฐ ๋ฆฌ์คํธ์ ๊ตฌํ ์๊ณ ๋ฆฌ์ฆ
6-1. ์ฐ๊ฒฐ ๋ฆฌ์คํธ์ ์์ฑ
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
typedef struct listNode { //์ฐ๊ฒฐ ๋ฆฌ์คํธ์ ๋
ธ๋ ๊ตฌ์กฐ ์ ์
int data[10];
struct listNode* link;
} listNode;
typedef struct { //๋ฆฌ์คํธ์ ํค๋ ๋
ธ๋ ๊ตฌ์กฐ ์ ์
listNode* head;
} headNode;
headNode createLinkedList(void) { //์ฐ๊ฒฐ ๋ฆฌ์คํธ ์์ฑ
headNode* H;
H = (headNode*)malloc(sizeof(headNode*));
H -> head = NULL;
return head;
}
|
cs |
1๋ผ์ธ: typedef struct ์ ์ธ๋ฌธ์ ์ฌ์ฉํ์ฌ ์ ์ํ๋ค.
2๋ผ์ธ: ๋ ธ๋์ ๋ฐ์ดํฐ ํ๋๋ intํ [10]์ ๊ณต๊ฐ์ ํ ๋นํ๋ค.
3,4๋ผ์ธ: struct listNode* link;
๋งํฌ ํ๋๋ ๋ค์ ๋ ธ๋์ ์ฃผ์๊ฐ์ ์ ์ฅํ์ฌ ๊ฐ๋ฆฌ์ผ์ผ ํ๊ธฐ ๋๋ฌธ์ listNodeํ ํฌ์ธํฐ๋ก ์ ์ํ๋ค. listNodeํ ํฌ์ธํฐ๋ listNode ์ ์ฒด๋ฅผ ๊ฐ๋ฆฌํค๋ ํฌ์ธํฐ ๋ณ์๊ฐ ๋๋ค.
6~8๋ผ์ธ: ์ฐ๊ฒฐ ๋ฆฌ์คํธ์ ๋งจ ์์ ์ผ๋ฐ์ ์ผ๋ก 'ํค๋ ๋ ธ๋'๋ผ๊ณ ๋ถ๋ฆฌ๋ฉฐ ์ฐ๊ฒฐ ๋ฆฌ์คํธ์ ์ฒซ ๋ฒ์งธ ๋ ธ๋๋ฅผ ๊ฐ๋ฆฌํค๋ ์ญํ ์ ํ๋ค. ํค๋ ๋ ธ๋๋ ๋ฐ์ดํฐ ํ๋๊ฐ ํ์ ์๊ณ ์ฒซ ๋ฒ์งธ ๋ ธ๋๋ฅผ ๊ฐ๋ฆฌํค๊ธฐ ์ํ ๋งํฌ ํ๋๋ง ํ์ํ๋ฏ๋ก listNodeํ ํฌ์ธํฐ๋ก ์ ์ํ๋ค.
10๋ผ์ธ: createLinkedList()๋ ํค๋ ๋ ธ๋๋ฅผ ํ๋ ์์ฑํ์ฌ ๋ฐํํ๋ ์ญํ ์ ํ๋ค. (๋น ์ฐ๊ฒฐ ๋ฆฌ์คํธ)
11๋ผ์ธ: ํค๋ ๋ ธ๋(headNode)๋ฅผ ๊ฐ๋ฆฌํค๋ ํฌ์ธํฐ ๋ณ์ H๋ฅผ ์ ์ธํ๋ค.
12๋ผ์ธ: ํค๋ ๋ ธ๋(headNode)์ ํฌ๊ธฐ๋งํผ์ ๋ฉ๋ชจ๋ฆฌ ์์ญ์ ํ ๋น๋ฐ์ ๊ทธ ์ฃผ์๋ฅผ ๋ฐํํ์ฌ H์ ์ ์ฅํ๋ค.
13๋ผ์ธ: H์ ๋งํฌ ํ๋์ธ head์๋ ์์ง ๊ฐ๋ฆฌํฌ ๋ ธ๋๊ฐ ์์ผ๋ฏ๋ก null์ ํ ๋นํ๋ค.
6-2. ์ฐ๊ฒฐ ๋ฆฌ์คํธ์ ๋ง์ง๋ง์ ๋ ธ๋ ์ฝ์
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
void addNode(headNode* H, int x) { //๋ฆฌ์คํธ์ ๋ง์ง๋ง ๋
ธ๋์ ์ฝ์
listNode* newNode;
listNode* lastNode;
newNode = (listNode*)malloc(sizeof(listNode));
newNode -> data = x;
newNode -> link = NULL;
if(H -> head == NULL) { //ํ์ฌ ๋ฆฌ์คํธ๊ฐ ๊ณต๋ฐฑ์ธ ๊ฒฝ์ฐ
H -> head = newNode;
return;
}
lastNode = H -> head;
while(lastNode -> link != NULL) lastNode = lastNode -> link;
lastNode -> link = newNode;
}
|
cs |
2๋ผ์ธ: ์ฝ์ ํ ์ ๊ท ๋ ธ๋๋ฅผ newNode๋ก ์ ์ํ๋ค.
3๋ผ์ธ: ์ฐ๊ฒฐ ๋ฆฌ์คํธ์ ๋ ธ๋๊ฐ ์กด์ฌํ๋ ๊ฒฝ์ฐ ๋ง์ง๋ง ๋ ธ๋๋ฅผ lastNode๋ก ์ ์ํ๋ค.
4๋ผ์ธ: newNode = (listNode*)malloc(sizeof(listNode));
newNode์ ๋ฐ์ดํฐ ๊ณต๊ฐ์ ๋ฉ๋ชจ๋ฆฌ์ ํ ๋น๋ฐ์ ์ฃผ์๊ฐ์ newNode์ ์ ์ฅํ๋ค.
5,6๋ผ์ธ: newNode์ ๋ฐ์ดํฐ ํ๋์ x๋ฅผ ์ ์ฅํ๊ณ ๋งํฌ ํ๋๋ ์์ง ๊ฐ๋ฆฌํค๋ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์๊ฐ(๋ ธ๋)์ด ์์ผ๋ฏ๋ก NULL์ ํ ๋นํ๋ค.
8๋ผ์ธ: ํ์ฌ ์ฐ๊ฒฐ ๋ฆฌ์คํธ๊ฐ ๊ณต๋ฐฑ์ธ ๊ฒฝ์ฐ ํค๋ ๋ ธ๋ H๊ฐ newNode๋ฅผ ๊ฐ๋ฆฌํฌ ์ ์๋๋ก ๋งํฌ ํ๋์ newNode์ ์ฃผ์๊ฐ์ ์ ์ฅํ๊ณ ์ข ๋ฃํ๋ค.
13,14๋ผ์ธ: ํ์ฌ ์ฐ๊ฒฐ ๋ฆฌ์คํธ๊ฐ ๊ณต๋ฐฑ์ด ์๋ ๊ฒฝ์ฐ ๋ง์ง๋ง ๋ ธ๋๋ฅผ ์ฐพ๋๋ค. ํค๋ ๋ ธ๋๋ถํฐ ์์ํ์ฌ(H -> head) ๋งํฌ๋ฅผ ๋ฐ๋ผ ๋ค์ ๋ ธ๋๋ก ์ด๋ํ๋ค. ๋ค์ ๋ ธ๋์ ๋งํฌ๊ฐ NULL์ด ์๋ ๋ ๊น์ง ๋ฐ๋ณต(while(lastNode -> link != NULL))ํ์ฌ ๋ง์ง๋ง ๋ ธ๋๋ฅผ ์ฐพ๋๋ค.
15๋ผ์ธ: ๋ง์ง๋ง ๋ ธ๋์ ๋งํฌ ํ๋์ newNode์ ์ฃผ์๊ฐ์ ์ ์ฅํ์ฌ newNode๋ฅผ ๊ฐ๋ฆฌํค๊ฒ ํ๋ค.
์ด addNode ํจ์์ x๋ฅผ ๊ฐ๊ฐ 200, 300์ผ๋ก ๋ ๋ฒ ๋ ํธ์ถํ๋ฉด ์ฐ๊ฒฐ ๋ฆฌ์คํธ๋ ์๋์ ๋ชจ์ต์ด ๋๋ค.
6-3. ์ฐ๊ฒฐ ๋ฆฌ์คํธ์ ๋ง์ง๋ง ๋ ธ๋ ์ญ์
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
void deleteNode(headNode* H) { //๋ฆฌ์คํธ์ ๋ง์ง๋ง ๋
ธ๋ ์ญ์ ์ฐ์ฐ
listNode* prevNode;
listNode* delNode;
if(H -> head == NULL) return; //๋น ๋ฆฌ์คํธ์ธ ๊ฒฝ์ฐ ์ญ์ ํ ๋
ธ๋๊ฐ ์์ผ๋ฏ๋ก ์ข
๋ฃ
if(H -> head -> link == NULL) { //๋ฆฌ์คํธ์ ๋
ธ๋๊ฐ ํ ๊ฐ์ธ ๊ฒฝ์ฐ
free(H -> head); //๊ทธ ๋
ธ๋์ ๋ฉ๋ชจ๋ฆฌ ํด์
H -> head = NULL;
return;
}
else { //๋ฆฌ์คํธ์ ๋
ธ๋๊ฐ 2๊ฐ ์ด์์ธ ๊ฒฝ์ฐ
prevNode = H -> head;
delNode = H -> head -> link;
while(delNode -> link != NULL) {
prevNode = delNode;
delNode = delNode -> link;
}
free(delNode);
prevNode -> link = NULL;
}
}
|
cs |
2๋ผ์ธ: ์ญ์ ํ ๋ ธ๋์ ์ ํ ๋ ธ๋๋ฅผ ๊ฐ๋ฆฌํฌ ๋ณ์
3๋ผ์ธ: ์ญ์ ํ ๋ ธ๋๋ฅผ ๊ฐ๋ฆฌํฌ ๋ณ์
4๋ผ์ธ: if(H -> head == NULL)
๋น ์ฐ๊ฒฐ ๋ฆฌ์คํธ์ธ ๊ฒฝ์ฐ ์ญ์ ํ ๋ ธ๋๊ฐ ์์ผ๋ฏ๋ก ์ข ๋ฃ
5~9๋ผ์ธ: if(H -> head -> link == NULL)
์ฐ๊ฒฐ ๋ฆฌ์คํธ์ ๋ ธ๋๊ฐ ํ ๊ฐ์ธ ๊ฒฝ์ฐ ํด๋น ๋ ธ๋๋ฅผ ์ญ์ ํ๋ฉด ๋๋ค. free() ํจ์๋ก ํด๋น ๋ ธ๋์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ ์์ญ์ ๋ฐํํ๊ณ ํค๋ ๋ ธ๋์ ๋งํฌ ํ๋์ NULL ํ ๋น
10๋ผ์ธ: ์ฐ๊ฒฐ ๋ฆฌ์คํธ์ ๋ ธ๋๊ฐ 2๊ฐ ์ด์์ธ ๊ฒฝ์ฐ
11๋ผ์ธ: ์ญ์ ํ ๋ ธ๋์ ์ ํ ๋ ธ๋๋ฅผ ์ฒซ ๋ฒ์งธ ๋ ธ๋๋ก ์ง์
12๋ผ์ธ: ์ญ์ ํ ๋ ธ๋๋ฅผ ๋ ๋ฒ์งธ ๋ ธ๋๋ก ์ง์
13~16๋ผ์ธ: ๋งํฌ ํ๋๊ฐ NULL์ด ์๋ ๋ ๊น์ง prevNode์ delNode๋ฅผ ๋ค๋ก ํ ์นธ์ฉ ์ด๋
17๋ผ์ธ: while๋ฌธ์์ ๋์ ๋ง์ง๋ง ๋ ธ๋(์ญ์ ํ ๋ ธ๋)๋ฅผ ์ฐพ์ผ๋ฉด ๋ฉ๋ชจ๋ฆฌ ํด์
18๋ผ์ธ: ์ ํ ๋ ธ๋์ ๋งํฌ ํ๋์ NULL ํ ๋น
์ฐ๊ฒฐ ๋ฆฌ์คํธ ์ด๊ธฐ ์ํ๊ฐ ์์ ๊ฐ๋ค๋ฉด 13~16๋ผ์ธ์ while๋ฌธ์ 1๋ฒ ๋์ prevNode์ delNode๋ ๊ฐ๊ฐ ์ฃผ์๊ฐ 5500์ธ ๋ ธ๋, 6000์ธ ๋ ธ๋๊ฐ ๋๋ค. ์ฃผ์๊ฐ 6000์ธ ๋ ธ๋๊ฐ ์ญ์ ๋๊ณ 5500์ธ ๋ ธ๋์ ๋งํฌ ํ๋์ null์ด ํ ๋น๋์ด ๋ง์ง๋ง ๋ ธ๋๊ฐ ๋๋ค.
6-4. ์ฐ๊ฒฐ ๋ฆฌ์คํธ์ ํน์ ๋ ธ๋ ๋ค์ ์ฝ์
๋ค์์ ์ฝ์ ํ ์ ํ ๋ ธ๋(prevNode)์ ๋ํ ํฌ์ธํฐ๋ฅผ ๋งค๊ฐ๋ณ์๋ก ๋ฐ์์ ์ฒ๋ฆฌํ๋ ์๊ณ ๋ฆฌ์ฆ์ด๋ค.
1
2
3
4
5
6
7
8
9
10
|
void addItNode(headNode* H, listNode* prevNode, int x) {
listNode* newNode;
newNode = (listNode*)malloc(sizeof(listNode));
newNode -> data = x;
newNode -> link = NULL;
newNode -> link = prevNode -> link;
prevNode -> link = newNode;
return;
}
|
cs |
2~5๋ผ์ธ: ์ฝ์ ํ ๋ ธ๋ newNode ์์ฑ
7๋ผ์ธ: newNode๊ฐ ์ ํ ๋ ธ๋ prevNode์ ํํ ๋ ธ๋(prevNode -> link)๋ฅผ ๊ฐ๋ฆฌํค๊ฒ ํจ
8๋ผ์ธ: prevNode๊ฐ newNode๋ฅผ ๊ฐ๋ฆฌํค๊ฒ ํจ
๋ง์ผ 7๋ผ์ธ, 8๋ผ์ธ์ ์์๋ฅผ ์งํค์ง ์์ผ๋ฉด ํํ ๋ ธ๋(prevNode -> link)๋ฅผ ์ฐ๊ฒฐํ ์ ์์ผ๋ฏ๋ก ๋ฐ๋์ newNode์ ๋งํฌ ํ๋ ๋จผ์ ๋ณ๊ฒฝํด์ผ ํ๋ค.
โ ์ฝ์ ํ newNode ์์ฑ
โก newNode์ ๋งํฌ ํ๋๊ฐ prevNode์ ๋งํฌ๋ฅผ ๊ฐ๋ฆฌํค๋๋ก ๋ณ๊ฒฝ
โข prevNode์ ๋งํฌํ๋๊ฐ newNode๋ฅผ ๊ฐ๋ฆฌํค๋๋ก ๋ณ๊ฒฝ
6-5. ์ฐ๊ฒฐ ๋ฆฌ์คํธ์ ํน์ ๋ ธ๋ ์ญ์
๋ค์์ ์ญ์ ํ ๋ ธ๋(delNode)์ ์ญ์ ํ ๋ ธ๋์ ์ ํ ๋ ธ๋(prevNode)์ ๋ํ ํฌ์ธํฐ๋ฅผ ๋งค๊ฐ๋ณ์๋ก ๋ฐ์์ ์ฒ๋ฆฌํ๋ ์๊ณ ๋ฆฌ์ฆ์ด๋ค.
1
2
3
4
5
|
void deleteItNode(headNode* H, listNode* prevNode, listNode* delNode) {
prevNode -> link = delNode -> link;
free(delNode);
return;
}
|
cs |
2๋ผ์ธ: ์ญ์ ์ ์ ํ ๋ ธ๋๊ฐ ํํ ๋ ธ๋๋ฅผ ๊ฐ๋ฆฌํค๋๋ก ํ๋ค. (delNode -> link : ์ญ์ ํ ๋ ธ๋์ ํํ ๋ ธ๋)
3๋ผ์ธ: ๋ ธ๋๋ฅผ ์ญ์ (๋ฉ๋ชจ๋ฆฌ ๋ฐํ)ํ๊ณ ํ๋ก๊ทธ๋จ์ ์ข ๋ฃํ๋ค.
โ ์ฐ๊ฒฐ ๋ฆฌ์คํธ ์ด๊ธฐ ์ํ
โก prevNode์ ๋งํฌ ํ๋๊ฐ delNode์ ๋งํฌ๋ฅผ ๊ฐ๋ฆฌํค๋๋ก ๋ณ๊ฒฝ
โข delNode ๋ฉ๋ชจ๋ฆฌ ๋ฐํ
6-6. ์ฐ๊ฒฐ ๋ฆฌ์คํธ์ ํน์ ๋ ธ๋ ๊ฒ์
ํค๋ ๋ ธ๋ ๋ถํฐ ํ๋ ์ฉ ๋ฐ๋ผ๊ฐ๋ฉฐ ํน์ ๋ ธ๋๋ฅผ ๊ฒ์ํ๋ค. ๊ฒ์ํ๊ณ ์ ํ๋ ๋ ธ๋๊ฐ ์กด์ฌํ์ง ์๊ฑฐ๋ ๋น ๋ฆฌ์คํธ์ธ ๊ฒฝ์ฐ ๋ฑ์ ๊ณ ๋ คํด์ผ ํ๋ค. ๋ค์์ ๋น ์ฐ๊ฒฐ ๋ฆฌ์คํธ๊ฐ ์๋๋ฉฐ ๊ฒ์ํ๊ณ ์ ํ๋ ๋ ธ๋๊ฐ ๋ฐ๋์ ์กด์ฌํ๋ค๊ณ ๊ฐ์ ํ ์๊ณ ๋ฆฌ์ฆ์ด๋ค.
1
2
3
4
5
6
7
8
9
10
|
void searchNode(headNode* H, int x) { //๋ฐ์ดํฐ ํ๋ ๊ฐ์ด x์ธ ๋
ธ๋ ๊ฒ์
listNode* tempNode;
tempNode = H -> head;
while(tempNode -> data != x) {
tempNode = tempNode -> link;
}
printf("Search Successful.\n");
}
|
cs |
2๋ผ์ธ: ๋ ธ๋๋ค์ ์ฐจ๋ก๋ก ํ์ํ ๋ ์ฌ์ฉํ ๋ ธ๋ ์ ์
5~7๋ผ์ธ: ์ฐพ๊ณ ์ ํ๋ ๊ฐ๊ณผ ํ์ฌ ๋ ธ๋์ ๋ฐ์ดํฐ ํ๋ ๊ฐ์ ์ฐจ๋ก๋ก ๋น๊ต
9๋ผ์ธ: ๋์ ๋ ธ๋๋ฅผ ์ฐพ์์ผ๋ฉด ๋ฉ์์ง ์ถ๋ ฅ
์ํฉ์ ๋ฐ๋ผ ๊ฒ์ํ ๋ ธ๋์ ์ฃผ์๊ฐ์ ๋ฐํํ๋ ๋ฑ์ ๋ณ๊ฒฝ์ ํ ์ ์๋ค. ํน์ ๋ ธ๋๋ฅผ ๊ฒ์ํ๋ ์๊ณ ๋ฆฌ์ฆ์ ์ฐ๊ฒฐ ๋ฆฌ์คํธ์ ํน์ ์์น์ ๋ ธ๋๋ฅผ ์ฝ์ ํ๊ฑฐ๋ ํน์ ๋ ธ๋๋ฅผ ์ญ์ ํ๋ ์๊ณ ๋ฆฌ์ฆ๊ณผ ๊ฒฐํฉํ์ฌ ์ฌ์ฉํ ์ ์๋ค.
7. ์ฐ์ต๋ฌธ์
1. ๋ค์ ์ค ๋ฆฌ์คํธ์ ๋ํ ์ค๋ช ์ผ๋ก ํ๋ฆฐ ๊ฒ์?
โ '์ผ์ ํ ์์'์ ๋์ด
โก ์ด๋ค ์ ์์ ์ํด์ ๊ฒฐ์ ๋ '๋ ผ๋ฆฌ์ ์ธ ์์'์ ๋์ด
โข ๋ฆฌ์คํธ๋ฅผ ํฌ์ธํฐ๋ก ๊ตฌํํ ๊ฒฝ์ฐ์๋ ๋ฐฐ์ด์ ๋นํด์ ์ถ๊ฐ์ ์ธ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ด ํ์ํ๋ค.
โฃ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์์์ ๋ฌผ๋ฆฌ์ ์ธ ์์น๊ฐ ๋ ผ๋ฆฌ์ ์ธ ์์น์ ๋์ผํ๋ค.
2. ๋ค์ ํ๋ก๊ทธ๋จ์ 2๊ฐ์ ๋ ธ๋๋ก ๊ตฌ์ฑ๋ ์ฐ๊ฒฐ ๋ฆฌ์คํธ์ ๋ ธ๋ ์์ฑ๊ณผ ์ฐ๊ฒฐ์ ๊ดํ ํ๋ก๊ทธ๋จ์ด๋ค. [๊ฐ]์ [๋]์ ์๋ง์ ๊ฒ์ ๋ฌด์์ธ๊ฐ?
โ [๊ฐ] ListNode* link; [๋] H = (list_pointer) list_node;
โก [๊ฐ] struct ListNode* link; [๋] H = (linkedList_h*)malloc(sizeof(linkedList_h*))
โข [๊ฐ] struct LinkNode* link; [๋] H = struct list_node;
โฃ [๊ฐ] LinkNode* link; [๋] H = list_node -> data;
3. ๋ค์ ์ค ์ฐ๊ฒฐ ๋ฆฌ์คํธ์ ๋ํ ์ค๋ช ์ผ๋ก ํ๋ฆฐ ๊ฒ์?
โ ๋ฐ์ดํฐ๊ฐ '๋ ผ๋ฆฌ์ ์ธ ์์' ํน์ ๋ฆฌ์คํธ์ ๋ํ๋๋ ์์๋ค๊ฐ์ '์๋ฏธ์ ์ธ ์์'๋ฅผ ์ ์งํ๋ค.
โก ์์์ ์์๊ฐ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์์์ ๋ฌผ๋ฆฌ์ ์์๋ฅผ ์๋ฏธํ๋ค.
โข ์์๋ค์ ๋ฌผ๋ฆฌ์ ์ธ ์ ์ฅ ์์๋ ์์น์๋ ๋ฌด๊ดํ๊ฒ ์์๋ค๊ฐ์ ๋ ผ๋ฆฌ์ ์ธ ์์๋ง ์ ์งํด์ฃผ๋ฉด ๋๋ค.
โฃ ๋ฐฐ์ด์ ์ด์ฉํ์ฌ ๊ตฌํํ ์ ์๋ค.
4. 10๊ณผ 3.14๋ฅผ ์ถ๋ ฅํ๊ธฐ ์ํด [๊ฐ]์ [๋]์ ์๋ง์ ๊ฒ์ ๋ฌด์์ธ๊ฐ?
์ ๋ต โผ
1 : โฃ
2 : โก
3 : โก
4 : โฃ
'Computer Science' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[์๊ณ ๋ฆฌ์ฆ] ์๊ณ ๋ฆฌ์ฆ์ ์ค๊ณ์ ๋ถ์ - ์๊ฐ ๋ณต์ก๋์ ์ ๊ทผ์ฑ๋ฅ (0) | 2020.03.11 |
---|---|
[์๊ณ ๋ฆฌ์ฆ] ์๊ณ ๋ฆฌ์ฆ์ ๊ฐ๋ ๊ณผ ๊ธฐ๋ณธ ์๋ฃ๊ตฌ์กฐ (0) | 2020.03.10 |
[์๋ฃ๊ตฌ์กฐ] ํ - ์ ๋ฆฌ ๋ฐ ์ฐ์ต๋ฌธ์ (0) | 2019.11.20 |
[์๋ฃ๊ตฌ์กฐ] ์คํ - ์ ๋ฆฌ ๋ฐ ์ฐ์ต๋ฌธ์ (0) | 2019.11.19 |
[์๋ฃ๊ตฌ์กฐ] ๋ฐฐ์ด - ์ ๋ฆฌ ๋ฐ ์ฐ์ต๋ฌธ์ (2) | 2019.11.19 |
๋๊ธ