SlideShare ist ein Scribd-Unternehmen logo
1 von 16
Downloaden Sie, um offline zu lesen
C3์กฐ ๊ณผ์ œ๋ฌผ ๋ฐœํ‘œ



            ์กฐ์žฅ : 09๋ฐ•๊ตฌ๋‚จ
            ์กฐ์› : 07์ด์šฉ์žฌ
                09๊น€ํ˜„ํ˜ธ
                09์†กํ•˜์œค
                11์ •์˜ˆ๋ฆฐ

    - 1 -
๊ณผ์ œ์ˆ˜ํ–‰์ผ์ง€
                                             ์กฐ์›์†Œ๊ฐœ
                                   ์กฐ์žฅ              ๋ฐ•๊ตฌ๋‚จ
์†Œ ์†           C3 ์กฐ                ์ž๋ฃŒ์กฐ์‚ฌ           ์†กํ•˜์œค, ๊น€ํ˜„ํ˜ธ
                                 ํ”„๋กœ๊ทธ๋ž˜๋ฐ           ์ด์šฉ์žฌ, ์ •์˜ˆ๋ฆฐ
                               ์ฃผ   ์ œ

์—ฐ๊ตฌ์ œ๋ชฉ    ์ƒํ˜ธ ์ฐธ์กฐ ์ƒ์„ฑ๊ธฐ

        ํŠธ๋ฆฌ๋ฅผ ์ด์šฉํ•˜์—ฌ ํ•˜๋‚˜ ์ด์ƒ์˜ ๋ฌธ์žฅ์„ ์ž…๋ ฅ ํ•˜์˜€์„๋•Œ ๋‹จ์–ด๋“ค์˜ ๊ฐœ์ˆ˜,Line๋ฅผ ๋‚˜ํƒ€๋‚ผ ์ˆ˜ ์žˆ
์—ฐ๊ตฌ๋ฐฐ๊ฒฝ    ์œผ๋ฉฐ ์ด๊ฒƒ์„ ์‘์šฉ ํ•  ์ˆ˜ ์žˆ๋‹ค.

                              ์ฐธ ๊ณ  ์ž ๋ฃŒ
                              ๊ณผ์ œ์˜ ์ˆ˜ํ–‰
 ์ฒซ์งธ๋‚                  2012   ๋…„        5 ์›”         8   ์ผ      ํ™”์š”์ผ
ํšŒ์˜ ์ฃผ์ œ                       ์กฐ์› ์ž๊ธฐ์†Œ๊ฐœ ๋ฐ ์—ญํ• ๋ถ„๋‹ด, ๊ณผ์ œ ํŒŒ์•…

        ์กฐ์žฅ : ๋ฐ•๊ตฌ๋‚จ
        ์ž๋ฃŒ์กฐ์‚ฌ : ๊น€ํ˜„ํ˜ธ, ์†กํ•˜์œค
        ํ”„๋กœ๊ทธ๋ž˜๋ฐ : ์ด์šฉ์žฌ, ์ •์˜ˆ๋ฆฐ

        ์ด์ƒ๊ณผ ๊ฐ™์ด ์ด๋ฒˆ ํ”„๋กœ์ ํŠธ์˜ ์—ญํ• ๋ถ„๋‹ด์„ ์‹ค์‹œํ–ˆ์Šต๋‹ˆ๋‹ค.

        ์ฒซ ์ˆ˜์—…์‹œ๊ฐ„์— ๋ฌธ์ œ ํŒŒ์•…์„ ์œ„ํ•ด ํ† ์˜๋ฅผ ์ง„ํ–‰ ํ•˜๋ฉด์„œ ๊ฐ์ž ์—ญํ•  ๋ถ„๋‹ด์„ ํ•˜์˜€์Šต๋‹ˆ๋‹ค.


        ํŠธ๋ฆฌ(Tree)
        ํŠธ๋ฆฌ ํšŒ๋กœ. ๋‚˜๋ฌด๊ฐ€ ํ•˜๋‚˜์˜ ๋ฟŒ๋ฆฌ(Root)์—์„œ ์ค„๊ธฐ๊ฐ€ ๋‚˜์™€ ๊ฐ€์ง€๋กœ ๋‚˜๋ˆ„์–ด์ง€๋Š” ๊ฒƒ์ฒ˜๋Ÿผ, ์–ด๋–ค
ํšŒ์˜ ๋‚ด์šฉ   ํ•˜๋‚˜์˜ ์ง‘ํ•ฉ์œผ๋กœ๋ถ€ํ„ฐ ํ•˜์œ„ ๋ ˆ๋ฒจ๋กœ ๊ฐ€์ง€๊ฐ€ ๋‚˜์˜ค๋Š” ์ง‘ํ•ฉ ๊ด€๊ณ„๋ฅผ ๊ฐ–๋Š” ๊ณ„์ธต ๊ตฌ์กฐ๋ฅผ ๋งํ•œ๋‹ค.
        ๋ถ€๋ถ„์ ์œผ๋กœ๋„ ๊ฒฐ์ฝ” ๋ฃจํŠธ๋ฅผ ํ˜•์„ฑํ•˜๋Š” ๊ฒฝ์šฐ๋Š” ์—†๋‹ค. ๋”ฐ๋ผ์„œ ์ฒ˜์Œ์— ๊ฐ€์ง€๊ฐ€ ๋‚˜์˜ค๊ธฐ ์‹œ์ž‘๋˜
        ๊ณ  ์žˆ๋Š” ์ง‘ํ•ฉ์œผ๋กœ๋ถ€ํ„ฐ ์ฐจ๋ก€๋Œ€๋กœ ใ€Œ๊ฐ€์ง€ใ€๋ฅผ ๋”๋“ฌ์–ด๊ฐ€๋ฉด ๋ชฉ์ ์˜ ์ง‘ํ•ฉ์„ ์ฐพ์„ ์ˆ˜ ์žˆ๋‹ค. ์ •
        ๋ณด ์ฒ˜๋ฆฌ ๋ถ„์•ผ์—๋Š” ์ด ๊ฐ™์€ ํŠธ๋ฆฌ ๊ตฌ์กฐ๋ฅผ ๊ฐ€์ง„ ๊ฐœ๋…์ด ๋งŽ์ด ์žˆ๋‹ค.




        ํŠธ๋ฆฌ์˜ ์กฐ๊ฑด
        1) ํŠธ๋ฆฌ์˜ ๋…ธ๋“œ ์ค‘ 1๊ฐœ์˜ Root Node๊ฐ€ ์žˆ์–ด์•ผ ํ•œ๋‹ค.
        2) Root Node๋ฅผ ์ œ์™ธํ•œ ๋…ธ๋“œ๋“ค์„ n๊ฐœ (n>=0)์˜ ๋ถ€๋ถ„์ง‘ํ•ฉ์œผ๋กœ ๋‚˜๋ˆ„์–ด์ง€๋ฉฐ, ๊ฐ ๋ถ€๋ถ„์ง‘ํ•ฉ
        ์€ ํ•˜๋‚˜์˜ ํŠธ๋ฆฌ์ด๋‹ค. ์ด๋•Œ ๊ฐ ๋ถ€๋ถ„์ง‘ํ•ฉ์„ subtree๋ผ๊ณ  ํ•œ๋‹ค.
ํŠธ๋ฆฌ์˜ ์šฉ์–ด.
Node
 ํŠธ๋ฆฌ๋ฅผ ํ‘œํ˜„ํ•˜๋Š” ๊ตฌ์„ฑ์š”์†Œ.
Root Node
 ํŠธ๋ฆฌ์—์„œ ์ตœ์ƒ์œ„ ๋ ˆ๋ฒจ์— ์žˆ๋Š” ๋…ธ๋“œ(ํŠธ๋ฆฌ์˜ ์ฒ˜์Œ ๋…ธ๋“œ).
Degree of Node
 ๋…ธ๋“œ์—์„œ children Node์˜ ์ˆ˜.
Degree of a Tree
 ํŠธ๋ฆฌ๋ฅผ ํ˜•์„ฑํ•˜๋Š” ๋ชจ๋“  ๋…ธ๋“œ์˜ ์ฐจ์ˆ˜์—์„œ ์ตœ๋Œ€๊ฐ’.
Sub tree
 ํŠธ๋ฆฌ์—์„œ Root Node๋ฅผ ์ œ์™ธํ•œ ๋ชจ๋“  ํŠธ๋ฆฌ.
Ancestor Node
 Root Node์—์„œ ์ž„์˜์˜ ๋…ธ๋“œ ๊นŒ์ง€์˜ ๊ฒฝ๋กœ๋ฅผ ํ˜•์„ฑํ•˜๋Š” ๋…ธ๋“œ.
Descendent Node
 ํŠธ๋ฆฌ์—์„œ ์ž„์˜์˜ ํ•˜์œ„๋…ธ๋“œ์— ์—ฐ๊ฒฐ๋œ ๋ชจ๋“  ๋…ธ๋“œ.
Parent Node
 ์ž„์˜์˜ ๋…ธ๋“œ์— ์—ฐ๊ฒฐ๋œ ๋ฐ”๋กœ ์œ„์˜ ๋…ธ๋“œ.
Children Node
 ์ž„์˜์— ๋…ธ๋“œ์— ์—ฐ๊ฒฐ๋œ ๋ฐ”๋กœ ์•„๋ž˜์˜ ๋…ธ๋“œ.
sibling
 ๋™์ผํ•œ Parent Node๋ฅผ ๊ฐ€์ง€๋Š” ๋…ธ๋“œ.
Branch Node
 Root Node์™€ Leaf Node๋ฅผ ์ œ์™ธํ•œ ๋ชจ๋“  ๋…ธ๋“œ.
Leaf Node
 ๋…ธ๋“œ์˜ ์ฐจ์ˆ˜๊ฐ€ 0์ธ ๋…ธ๋“œ(ํŠธ๋ฆฌ์˜ ๋งˆ์ง€๋ง‰๋…ธ๋“œ).
Level
 ํŠธ๋ฆฌ์—์„œ Root Node๋ถ€ํ„ฐ ํ•œ๋‹จ๊ณ„์”ฉ ๋‚ด๋ ค๊ฐ€๋ฉด์„œ 1์”ฉ ์ฆ๊ฐ€ํ•œ๋‹ค.
Height(Depth)
 ํŠธ๋ฆฌ์˜ ์ตœ๋Œ€ ๋ ˆ๋ฒจ.
Path
 ์–ด๋–ค ์ž„์˜์˜ ๋…ธ๋“œ๋กœ๋ถ€ํ„ฐ ์ž„์˜์˜ ๋…ธ๋“œ์— ์ด๋ฅด๋Š” ๋™์•ˆ์— ์—ฐ๊ฒฐ๋œ ์ผ๋ จ์˜ ๋…ธ๋“œ์˜ ์ง‘ํ•ฉ. ๊ฒฝ
๋กœ์˜ ๊ธธ์ด๋Š” ๊ฒฝ๋กœ๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ๋…ธ๋“œ์˜ ์ˆ˜๋ณด๋‹ค 1์ด ์ž‘๋‹ค.


ํŠธ๋ฆฌ์˜ ํ‘œํ˜„๋ฐฉ๋ฒ•.
ํŠธ๋ฆฌ์˜ ํ‘œํ˜„๋ฐฉ๋ฒ•์œผ๋กœ๋Š” ๋ฆฌ์ŠคํŠธ, ์ง‘ํ•ฉ, ๋ง‰๋Œ€ ๊ทธ๋ž˜ํ”„, ๋ฐฐ์—ด, ์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ ๋“ฑ์ด ์žˆ๋‹ค.


ํŠธ๋ฆฌ์˜ ๋ถ„๋ฅ˜ ๋ฐฉ๋ฒ•.


                   - 2 -
ํŠธ๋ฆฌ๋Š” ๊ทธ๋ž˜ํ”„์˜ ์ผ์ข…์œผ๋กœ์„œ Direct Tree ์™€ Undirect Tree, General Tree์™€ Binary
       Tree ๋“ฑ์œผ๋กœ ๊ตฌ๋ถ„๋œ๋‹ค.


       General Tree.
       1)Ordered Tree & Oriented Tree
        ํŠธ๋ฆฌ์—์„œ ๋ ˆ๋ฒจ์˜ ๊ฐ™์€ ๋…ธ๋“œ๋“ค์˜ ์ˆœ์„œ๊ฐ€ ์ค‘์š”ํ•œ ๊ฒฝ์šฐ๋ฅผ Ordered Tree๋ผ๊ณ  ํ•˜๊ณ , ๋…ธ๋“œ์˜
       ์ˆœ์„œ๊ฐ€ ์ค‘์š”ํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ์—๋Š” Oriented Tree๋ผ๊ณ  ํ•œ๋‹ค.
       2)Similar Tree & Equivalent Tree
        ์ž„์˜์˜ ํŠธ๋ฆฌ๊ฐ€ 2๊ฐœ ์ฃผ์–ด์กŒ์„๋•Œ ํŠธ๋ฆฌ๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ์ „์ฒด ๋…ธ๋“œ์˜ ์ˆ˜์™€ ์ขŒ์šฐ ๋ฐฐ์—ด ์œ„์น˜๋“ฑ๊ณผ
       ๊ฐ™์€ ์™ธํ˜•์ ์ธ ๋ถ€๋ถ„์ด ๊ฐ™์„ ๊ฒฝ์šฐ Similar Tree ๋ผ๊ณ  ํ•˜๊ณ , ๋…ธ๋“œ์˜ ๋‚ด์šฉ๊นŒ์ง€ ๊ฐ™์€ ๊ฒฝ์šฐ
       Equivalent Tree๋ผ๊ณ  ํ•œ๋‹ค.


       Binary Tree
        ์ผ๋ฐ˜ํŠธ๋ฆฌ์™€๋Š” ๋‹ค๋ฅด๊ฒŒ ์ค‘์š”ํ•œ ํ˜•ํƒœ์˜ ์ž๋ฃŒ ๊ฐ์ฒด๋กœ ์ฐจ์ˆ˜๊ฐ€ 2์ดํ•˜์ธ ํŠธ๋ฆฌ์ด๋‹ค. ์ฆ‰, ์ผ๋ฐ˜ํŠธ
       ๋ฆฌ์—์„œ๋Š” ๋…ธ๋“œ์˜ ๊ณต๋ฐฑ์ด ์กด์žฌํ•  ์ˆ˜ ์—†์ง€๋งŒ, Binary Tree์—์„œ๋Š” ์กด์žฌ ๊ฐ€๋Šฅํ•˜๋ฉฐ, ์™ผ์ชฝ๊ณผ
       ์˜ค๋ฅธ์ชฝ SubTree๊ฐ€ ๋…๋ฆฝ์ ์ด๋‹ค.
       1) Full Binary Tree
        Depth๊ฐ€ i์ธ Binary Tree์—์„œ ์—ฐ๊ฒฐ๋  ์ˆ˜ ์žˆ๋Š” ์ตœ๋Œ€์˜ ๋…ธ๋“œ๊ฐ€ ์—ฐ๊ฒฐ๋˜์–ด์ง„ ํŠธ๋ฆฌ๋ฅผ ๋งํ•˜
       ๋ฉฐ ๋…ธ๋“œ์˜ ์ˆ˜๋Š” 2i-1๊ฐœ์ด๋‹ค.
       2) Complete Binary Tree
        level์ด i์ธ ๋…ธ๋“œ์˜ ์ˆ˜๋ฅผ n์ด๋ผ ํ•  ๋•Œ 2^i-1 -1<n<2^i -1์„ ๋งŒ์กฑํ•˜๋Š” ํŠธ๋ฆฌ.
       3)Knuth Binary Tree
         ๊ฐ ๋…ธ๋“œ์˜ ์ฐจ์ˆ˜๊ฐ€ 2์ดํ•˜์ธ ํŠธ๋ฆฌ.
       4)์‚ฌํ–ฅ์ด์ง„ํŠธ๋ฆฌ
        Root Node๋ฅผ ์ค‘์‹ฌ์œผ๋กœ ์™ผ์ชฝ์ด๋‚˜ ์˜ค๋ฅธ์ชฝ ํ•œ ๋ฐฉํ–ฅ์œผ๋กœ ๊ธฐ์šธ์–ด์ง„ ํŠธ๋ฆฌ.

       zz
       ์กฐ์›๋“ค ๋ชจ๋‘ ๊ธฐ๋ณธ์ ์ธ ํŠธ๋ฆฌ์˜ ํ˜•ํƒœ๋งŒ ์•Œ๊ณ  ์žˆ์—ˆ์œผ๋ฉฐ, ํŠธ๋ฆฌ์˜ ์ข…๋ฅ˜,ํ‘œํ˜„๋ฐฉ๋ฒ•,ํ”„๋กœ๊ทธ๋ž˜๋ฐ์—
 ๋ฐ˜์„ฑ
       ์‘์šฉ ํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋ชจ๋‘ ์•Œ์ง€ ๋ชปํ•˜์—ฌ ์ž๋ฃŒ์กฐ์‚ฌ๋ฅผ ํ•˜๋ฉฐ ์•Œ์•„๋ณด๊ธฐ๋กœ ํ† ์˜ ํ•˜์˜€์Šต๋‹ˆ๋‹ค.
 ๋‘˜์งธ๋‚               2012 ๋…„        5 ์›”       10 ์ผ      ๋ชฉ์š”์ผ
ํšŒ์˜์ฃผ์ œ                     AVLํŠธ๋ฆฌ์˜ ๊ท ํ˜•๋ฐฉ๋ฒ• ๋ฐ ์ •์˜
       ์„œ๋กœ๊ฐ€ ์กฐ์‚ฌํ•ด์˜จ ๋‚ด์šฉ์„ ๋ฐ”ํƒ•์œผ๋กœ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๋งŒ๋“ค๊ธฐ์— ์•ž์„œ ๊ท ํ˜•ํŠธ๋ฆฌ์— ๊ด€ํ•˜์—ฌ ๊ต์ˆ˜๋‹˜
       ๊ป˜
       โ€ป AVL ํŠธ๋ฆฌ
       AVL ํŠธ๋ฆฌ๋Š” Adelson-Velskii์™€ Landis์— ์˜ํ•ด 1962๋…„์— ์ œ์•ˆ๋œ ํŠธ๋ฆฌ๋กœ์จ ๊ฐ ๋…ธ๋“ค์— ์™ผ
       ์ชฝ ์„œ๋ธŒ ํŠธ๋ฆฌ์˜ ๋†’์ด์™€ ์˜ค๋ฅธ์ชฝ ์„œ๋ธŒํŠธ๋ฆฌ์˜ ๋†’์ด ์ฐจ์ž‰๊ฐ€ 1 ์ดํ•˜์ธ ์ด์ง„ ํƒ์ƒ‰ ํŠธ๋ฆฌ๋ฅผ ๋งํ•œ
       ๋‹ค. AVLํŠธ๋ฆฌ๋Š” ํŠธ๋ฆฌ๊ฐ€ ๋น„๊ท ํ˜• ์ƒํƒœ๋กœ ๋˜๋ฉด ์Šค์Šค๋กœ ๋…ธ๋“œ๋“ค์„ ์žฌ๋ฐฐ์น˜ํ•˜์—ฌ ๊ท ํ˜• ์ƒํƒœ๋กœ ๋งŒ
ํšŒ์˜๋‚ด์šฉ   ๋“ ๋‹ค. ๋”ฐ๋ผ์„œ AVL ํŠธ๋ฆฌ๋Š” ๊ท ํ˜• ํŠธ๋ฆฌ๊ฐ€ ํ•ญ์ƒ ๋ณด์žฅ๋˜๊ธฐ ๋•Œ๋ฌธ์— ํƒ์ƒ‰์‹œ๊ฐ„์ด O(logn) ์‹œ๊ฐ„
       ์•ˆ์— ๋๋‚˜๊ฒŒ ๋œ๋‹ค. ๋˜ํ•œ ์‚ฝ์ž…๊ณผ ์‚ญ์ œ ์—ฐ์‚ฐ๋„ O(logn) ์‹œ๊ฐ„ ์•ˆ์— ํ•  ์ˆ˜ ์žˆ๋‹ค. ํ•˜์ง€๋งŒ ๋ ˆ๋“œ
       -๋ธ”๋ž™ ํŠธ๋ฆฌ๋ณด๋‹ค ํšจ์œจ์ด ๋–จ์–ด์ง€๊ธฐ ๋•Œ๋ฌธ์— ์ž์ฃผ ์‚ฌ์šฉ๋˜์ง€๋Š” ์•Š๋Š”๋‹ค.
       ย AVL ํŠธ๋ฆฌ์—์„œ ๊ท ํ˜• ์ธ์ˆ˜๋Š” ๋งค์šฐ ์ค‘์š”ํ•˜๋‹ค. ๊ท ํ˜• ์ธ์ˆ˜(Balancing Factor)๋ž€ [์™ผ์ชฝ ์„œ๋ธŒ
       ํŠธ๋ฆฌ์˜ ๋†’์ด - ์˜ค๋ฅธ์ชฝ ์„œ๋ธŒ ํŠธ๋ฆฌ์˜ ๋†’์ด]๋กœ ์ •์˜ ๋œ๋‹ค. ๋ชจ๋“  ๋…ธ๋“œ์˜ ๊ท ํ˜• ์ธ์ˆ˜๊ฐ€ ยฑ1 ์ด
       ํ•˜์ด๋ฉด AVL ํŠธ๋ฆฌ์ด๋‹ค. ์•„๋ž˜์˜ ์‚ฌ์ง„์€ ๋ชจ๋“  ๊ท ํ˜• ์ธ์ˆ˜๊ฐ€ ์ ์ ˆํ•˜๊ธฐ ๋•Œ๋ฌธ์— AVL ํŠธ๋ฆฌ๋ผ๊ณ 
       ํ•  ์ˆ˜ ์žˆ๋‹ค.




                                - 3 -
ย 
                             โ€ป ์‚ฝ์ž… ์—ฐ์‚ฐ
์›์†Œ๋ฅผ ํ•˜๋‚˜ ์‚ฝ์ž…ํ•˜๊ฒŒ ๋œ๋‹ค๋ฉด ์ด์ง„ ํƒ์ƒ‰ ํŠธ๋ฆฌ์˜ ์‚ฝ์ž… ๊ทœ์น™์— ๋”ฐ๋ผ ์šฐ์„  ๋…ธ๋“œ๋ฅผ ์œ„์น˜์‹œํ‚จ
๋‹ค. ๊ทธ๋ฆฌ๊ณ ย ๋ชจ๋“  ๋…ธ๋“œ์— ๋Œ€ํ•œย ๊ท ํ˜•์ธ์ˆ˜๊ฐ€ ยฑ1 ๋‚ด์—ย ๊ฐ’์ด๋ฉด ๊ท ํ˜•์ด ์œ ์ง€๋œ ๊ฒƒ์ด๋ฏ€๋กœ ์‚ฝ์ž…
๊ณผ์ •์„ ๋งˆ์นœ๋‹ค. ํ•˜์ง€๋งŒย ๋ชจ๋“  ๋…ธ๋“œ ์ค‘ย ํ•œ ๋…ธ๋“œ์˜ย ๊ท ํ˜• ์ธ์ˆ˜๋งŒ์ด๋ผ๋„ ๊ทธ ๋ฒ”์œ„๋ฅผ ๋ฒ—์–ด๋‚˜๋ฉด
        ๊ท ํ˜•์„ ๋งž์ถฐ์ฃผ๊ธฐ ์œ„ํ•œ "ํšŒ์ „(Rotation)" ์ž‘์—…์„ ํ•ด์ฃผ์–ด์•ผ ํ•œ๋‹ค.
AVL ํŠธ๋ฆฌ์—์„œ ๊ท ํ˜•์ด ๊นจ์ง€๋Š” ํƒ€์ž…์€ย 4๊ฐ€์ง€๊ฐ€ ์žˆ๋‹ค. ๊ฐ๊ฐ์˜ ํƒ€์ž…์„ ์‚ดํŽด๋ณด๋„๋ก ํ•˜์ž. ์ƒˆ
๋กœ ์ถ”๊ฐ€๋˜๋Š” ๋…ธ๋“œ๋ฅผ N, ๊ฐ€์žฅ ๊ฐ€๊นŒ์šฐ๋ฉด์„œ ๊ท ํ˜•์ธ์ˆ˜๊ฐ€ ยฑ2๊ฐ€ ๋œ ์กฐ์ƒ ๋…ธ๋“œ๋ฅผ A๋ผ๊ณ  ํ•˜์ž.
- LL : N์ด A์˜ ์™ผ์ชฝ ์„œ๋ธŒํŠธ๋ฆฌ์˜ ์™ผ์ชฝ์— ์‚ฝ์ž…๋˜๋Š” ๊ฒฝ์šฐ
- LR : N์ด A์˜ ์™ผ์ชฝ ์„œ๋ธŒํŠธ๋ฆฌ์˜ ์˜ค๋ฅธ์ชฝ์— ์‚ฝ์ž…๋˜๋Š” ๊ฒฝ์šฐ
- RR : N์ด A์˜ย ์˜ค๋ฅธ์ชฝ ์„œ๋ธŒํŠธ๋ฆฌ์˜ ์˜ค๋ฅธ์ชฝ์— ์‚ฝ์ž…๋˜๋Š” ๊ฒฝ์šฐ
- RL : N์ด A์˜ ์˜ค๋ฅธ์ชฝ ์„œ๋ธŒํŠธ๋ฆฌ์˜ ์™ผ์ชฝ์— ์‚ฝ์ž…๋˜๋Š” ๊ฒฝ์šฐ




                             ย ย ย ย ย ย ย ย ย ย 


                [LL]ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย  ย ย ย ย ย ย ย ย [LR]
                                   ย 
 ์ด๋ ‡๊ฒŒ ๊ท ํ˜•์ด ๊นจ์ง€๋Š” ๊ฒฝ์šฐ์—์„œ ๊ท ํ˜• ํŠธ๋ฆฌ๋กœ ๋‹ค์‹œ ๋ณ€๊ฒฝํ•˜๊ธฐ ์œ„ํ•ด์„œ ์ˆ˜ํ–‰ํ•˜๋Š” ํšŒ์ „ ๋˜ํ•œ
                     ๊ฐ๊ฐ ๋‹ค๋ฅด๋‹ค.
- LL : A๋ถ€ํ„ฐ N๊นŒ์ง€์˜ ๊ฒฝ๋กœ ์ƒ์˜ ๋…ธ๋“œ๋“ค์„ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ํšŒ์ „์‹œํ‚จ๋‹ค.(๋‹จ์ˆœํšŒ์ „)
- LR : A๋ถ€ํ„ฐ N๊นŒ์ง€์˜ ๊ฒฝ๋กœ ์ƒ์˜ ๋…ธ๋“œ๋“ค์„ ์™ผ์ชฝ-์˜ค๋ฅธ์ชฝ์œผ๋กœ ํšŒ์ „์‹œํ‚จ๋‹ค.(์ด์ค‘ํšŒ์ „)
- RR : A๋ถ€ํ„ฐ N๊นŒ์ง€์˜ ๊ฒฝ๋กœ ์ƒ์˜ ๋…ธ๋“œ๋“ค์„ ์™ผ์ชฝ์œผ๋กœ ํšŒ์ „์‹œํ‚จ๋‹ค.(๋‹จ์ˆœํšŒ์ „)
- RL : A๋ถ€ํ„ฐ N๊นŒ์ง€์˜ ๊ฒฝ๋กœ ์ƒ์˜ ๋…ธ๋“œ๋“ค์„ ์˜ค๋ฅธ์ชฝ-์™ผ์ชฝ์œผ๋กœ ํšŒ์ „์‹œํ‚จ๋‹ค.(์ด์ค‘ํšŒ์ „)
LL๊ณผ RR ํšŒ์ „, LR๊ณผ RL ํšŒ์ „์ด ๊ฐ๊ฐ ๋Œ€์นญ์ ์œผ๋กœ ๋™์ž‘ํ•˜๊ฒŒ ๋œ๋‹ค.
                                   ย 
LL ๋ถ€ํ„ฐ ์„ค๋ช…ํ•˜์ž๋ฉด, ์ผ๋‹จ ๋ฐ”๋กœ ์œ„ ๊ทธ๋ฆผ์„ ๋ณด์ž. ์„ธ๊ฐœ์˜ ์›์†Œ๋ฅผ ์ •ํ™•ํ•˜๊ฒŒ ์žฌ๋ฐฐ์น˜ํ•˜๊ธฐ ์œ„
ํ•ด์„  ์„ธ๊ฐœ ์ค‘ ์ค‘๊ฐ„๊ฐ’์„ ๋ถ€๋ชจ์— ์œ„์น˜์‹œํ‚ค๊ณ  ๋‚˜๋จธ์ง€๋ฅผ ๊ฐ๊ฐ ์™ผ์ชฝ, ์˜ค๋ฅธ์ชฝ ์ž์‹์œผ๋กœ ์‚ผ์œผ๋ฉด
๋  ๊ฒƒ์ด๋‹ค. ๋”ฐ๋ผ์„œ A๊ฐ€ ๋ถ€๋ชจ๊ฐ€ ๋˜๊ณ  B๋Š” A์˜ ์™ผ์ชฝ ์ž์‹ ๋…ธ๋“œ ์œ„์น˜๋ฅผ ๊ณ ์ˆ˜ํ•˜๋ฉฐ, C๋Š” A์˜



                         - 4 -
์˜ค๋ฅธ์ชฝ ์ž์‹ ๋…ธ๋“œ๊ฐ€ ๋œ๋‹ค. A์˜ ์˜ค๋ฅธ์ชฝ ์ž์‹ ๋…ธ๋“œ๋Š” C์˜ ์™ผ์ชฝ ์ž์‹ ๋…ธ๋“œ๊ฐ€ ๋œ๋‹ค.
           ๋‹ค์Œ์œผ๋กœ LR ์„ ๋ณด์ž. ๋จผ์ € A๊ฐ€ B์˜ ์ž๋ฆฌ์— ์œ„์น˜ํ•˜๊ณ  B๋Š” A์˜ ์™ผ์ชฝ ์ž์‹ ๋…ธ๋“œ๊ฐ€ ๋œ๋‹ค.
           A์˜ ๊ธฐ์กด ์™ผ์ชฝ ์ž์‹ ๋…ธ๋“œ๋Š” B์˜ ์˜ค๋ฅธ์ชฝ ์ž์‹ ๋…ธ๋“œ๊ฐ€ ๋œ๋‹ค. ์ด๋ ‡๊ฒŒ ์ฒซ๋ฒˆ์งธ ํšŒ์ „์ด ์™„๋ฃŒ๋˜
                           ๊ณ  ๋‘๋ฒˆ์งธ ํšŒ์ „์€ LL๊ณผ ๋™์ผํ•˜๋‹ค.
           ํšŒ์ „์— ๋Œ€ํ•œ ์Šต๋“์€ ๊ธ€๋กœ๋งŒ ์ฝ์–ด์„œ๋Š” ์ ˆ๋Œ€ ์ตํž ์ˆ˜ ์—†์œผ๋‹ˆ, ๋‹ค๋ฅธ ์ฑ…์„ ๋ณด๋ฉด์„œ ์‹ค์ œ๋กœ ์ˆ˜
           ํ–‰ํ•˜๋ณด๊ธธ ๋ฐ”๋ž€๋‹ค. ์œ„ ๊ทธ๋ฆผ์˜ ๊ฒฝ์šฐ๋ณด๋‹ค ๋ณต์žกํ•œ ๊ฒฝ์šฐ(๊ท ํ˜• ์ธ์ˆ˜๊ฐ€ 4์ธ ๊ฒฝ์šฐ๋„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค)
                           ๋„ ๋งŽ์œผ๋‹ˆ ์—ฐ์Šต์ด ํ•„์ˆ˜์ ์ด๋‹ค.
                                                                 ย 
                                                                 ย 
          [์ถœ์ฒ˜] ๊ท ํ˜• ์ด์ง„ ํƒ์ƒ‰ ํŠธ๋ฆฌ - AVL ํŠธ๋ฆฌ, ๋ ˆ๋“œ-๋ธ”๋ž™ ํŠธ๋ฆฌ|
          -๊ท ํ˜•ํŠธ๋ฆฌ(AVL)์— ๊ด€ํ•˜์—ฌ ๋‚ด์šฉ์„ ์ดํ•ด ํ•  ์ˆ˜ ์žˆ์—ˆ์œผ๋‚˜ ์ด๊ฒƒ์„ ์ฝ”๋”ฉ์— ์ ์šฉ ํ•˜๋Š”๊ฒƒ์ด
 ๋ฌธ์ œ์ 
          ์‰ฝ์ง€์•Š์•˜์Œ.
  ์…‹์งธ๋‚                                  2012    ๋…„             5 ์›”                      15   ์ผ       ํ™”์š”์ผ
 ํšŒ์˜์ฃผ์ œ                                                   ํ”„๋กœ๊ทธ๋žจ ์ดˆ์•ˆ ๋ถ„์„
          #include   <stdio.h>
          #include   <stdlib.h>
          #include   <conio.h>
          #include   <windows.h>
          #include   <string.h>
          struct Node {
                          char name;
                          Node *link[26];
                          int page[26];
                          int count;
                          int spot;
                          };
          Node addtree (Node *A, Node *B);
          Node AddNode (char A);
          Node Delnode (Node *A, char B);
          int search (Node *A, char B);
          int searchspot (Node *A, char B);
          void Printans (Node *A, char ans[], int x);

          int main () {
           int i,j,x,z;
           int check=0;
           FILE *point;
           char a = 'R';
           int m=0;
ํ”„๋กœ๊ทธ๋žจ ์ดˆ์•ˆ   // printf("์ง„ํ–‰์ค‘");
            Node *tree = (Node *)malloc(sizeof(Node));
          // printf("์ง„ํ–‰์ค‘");
           point=fopen("C://file.txt","r");
                      if(point==NULL)
                      {
                                 return 1;
                      }
           i = 0;
           j = 1;
           z = 0;
           tree[i] = AddNode(a);
                      while(1) //ํ…์ŠคํŠธ ํŒŒ์ผ์— ์ €์žฅ๋˜์–ด ์žˆ๋Š” ๋ฌธ์žฅ๋“ค์„ ๋ฐฐ์—ด์— ๋„ฃ์–ด์„œ ์ €์žฅ.
                      {
                                 a=fgetc(point);
                                   if(a>=65 && a<=90)
                                   {
                                              a+=32;
                                   }

                                   if(a>=97 && a<=122) // ์•ŒํŒŒ๋ฒณ์ด๋ฉด ๋…ธ๋“œ ์ง„ํ–‰
                                   {printf("%c",a);
                                               check = search(&tree[i],a); // ๋…ธ๋“œ ์žˆ๋Š”์ง€ ํ™•์ธ
                                              if (check == 0 ) { // ๋…ธ๋“œ๊ฐ€ ์—†์œผ๋ฉด ๋…ธ๋“œ ์ถ”๊ฐ€ ํ•˜๊ณ  ์•„๋ž˜ ๋…ธ๋“œ๋กœ ์ด๋™.




                                                        - 5 -
tree[j] = AddNode(a);
                     tree[j].spot = j;
                     tree[i] = addtree(&tree[i],&tree[j]);
                     i = j;
                     j++;
                                  } else {
                                  i = searchspot(&tree[i],a);
                                  } // ๋…ธ๋“œ๊ฐ€ ์žˆ์œผ๋ฉด ๊ทธ๋Œ€๋กœ ์œ„์น˜๋งŒ ์ด๋™.
                                  } else if(a==' ' || a=='n') {   // ๊ณต๋ฐฑ์ด๋‚˜ n ์ผ์‹œ, ์นด์šดํ„ฐ ์ฆ๊ฐ€. ๊ทธ๋ฆฌ๊ณ  root๋กœ ๋ณต๊ท€.
                                   tree[i].count++;
                                   tree[i].page[z]=1;
                                   i = 0;

                                   } else if(a=='+') {
                                          z++;
                                   } else if(a==EOF) {break; // ์•„๋ฌด ๊ฒƒ๋„ ์—†์„ ์‹œ ์ข…๋ฃŒ
                                   }
                 }


                 fclose(point);
    char ANS[50] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
    printf("nWord Count Linesn");

    Printans(&tree[0],ANS,0); // ์ถœ๋ ฅ

                 system("PAUSE");
                              getch();
            return 0;
}




Node addtree (Node *A, Node *B) {

        for (int i = 0; i < 26 ; i++) {
             if (A->link[i] == NULL) {
                                A -> link[i] = B;
                                printf("%c์˜ LINK%d์— %c๋ฅผ ์‚ฝ์ž… n",A -> name,i,B -> name);
                                break;
                              }
             }

        return *A;
        }
Node AddNode (char A) {

        Node *B = (Node *)malloc(sizeof(Node));
        B->name = A;
        for (int i = 0; i < 26 ; i++) {
                                         B->link[i] = NULL;
                                         B->page[i] = 0;

             }
                     B->count = 0;
                     B -> spot = 0;
        return *B;
        }

Node Delnode (Node *A, char B) {

        for (int i = 0; i < 26 ; i++) {




                                                         - 6 -
if (A -> link[i] != NULL ) {
                if (A -> link[i] -> name == B) {
                      A -> link[i] = NULL;
                      printf("%c์— LINK&d์— %c๋ฅผ ์‚ญ์ œ n",A -> name,i,B); }
                      }
                }

       return *A;
            }


       int search (Node *A, char B) {
            int x = 0;
            int i;
            for (i = 0; i < 26 ; i++) {
                if (A -> link[i] != NULL ) {
                if (A -> link[i] -> name == B) {
                x = 1;
                break;
                }
                } else break;
                }

                return x;
            }
       int searchspot (Node *A, char B) {


            for (int i = 0; i < 26 ; i++) {
                if (A -> link[i] != NULL ) {
                if (A -> link[i] -> name == B) {return A -> link[i] -> spot;}
                }
                }

       return 0;
            }
       void Printans (Node *A, char ans[], int x) {
                                 ans[x] = A -> name;

            for (int i = 0 ; i < 26 ; i++) {
                if (A -> count != 0) {
                         for (int j=0; j<=x; j++) {
                         printf("%c %d", ans[j],A->count);
                         }
                         for (int j=0; j<=26; j++) {
                             if (A->page[j] == 1) {
                                     printf("%d",j+1);
                                     }
                             }
                         } else {}
                if (A->link[i] != NULL) {
                                 Printans( A->link[i],ans,x);
                                 } else {}
                }
            return;
       } // ์ถœ๋ ฅ


       ํ”„๋กœ๊ทธ๋žจ ์ดˆ์•ˆ์„ ๋ถ„์„ํ•˜์—ฌ ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰์ด ๋˜๊ธฐ์œ„ํ•˜์—ฌ ์–ด๋–ค์‹์œผ๋กœ ๋ฐ”๊ฟ”๋ณด๋ฉด ์ข‹์„์ง€ ์กฐ์›๋“ค๊ณผ
ํšŒ์˜๋‚ด์šฉ
       ํ† ์˜๋ฅผ ์ง„ํ–‰ ํ•˜์˜€์Œ.
๋ฌธ์ œ์     ํ”„๋กœ๊ทธ๋žจ ์ดˆ์•ˆ ๋ถ„์„์„ ํ•œ ๊ฒฐ๊ณผ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒ ํ•˜์˜€๋Š”๋ฐ ๋ฌด์—‡ ๋•Œ๋ฌธ์— ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒ ํ•˜์˜€๋Š”์ง€




                                                         - 7 -
์ฐพ์ง€๋ฅผ ๋ชปํ•˜์—ฌ ํ—ค๋งค์—ˆ์Œ. ์ฃผ์œ„ ์ง€์ธ์˜ ๋„์›€์„ ๋ฐ›์•„ ๋ฌธ์ œ์ ์„ ์ฐพ์•„ ๋ณด๋ ค๊ณ  ํ•˜์˜€์œผ๋‚˜, ์ฐพ์ง€
       ๋ชปํ•˜์—ฌ ๋ฌธ์ž์—ด์„ ๋ฐฐ์—ด์— ์˜ฎ๊ฒจ์„œ ํ’€์–ด๋ณด๊ธฐ๋กœ ํ•˜์˜€์Œ.
 ๋„ท์งธ๋‚              2012 ๋…„      5 ์›”                                   17    ์ผ   ๋ชฉ์š”์ผ
ํšŒ์˜์ฃผ์ œ                       ํ”„๋กœ๊ทธ๋žจ ๋ณด์™„
       #include   <stdio.h>
       #include   <stdlib.h>
       #include   <conio.h>
       #include   <windows.h>
       #include   <string.h>
       struct Node {
                       char name;
                       Node *link[26];
                       int page[26];
                       int count;
                       int spot;
                       };
       Node addtree (Node *A, Node *B);
       Node AddNode (char A);
       Node Delnode (Node *A, char B);
       int Search (Node *A, char B);
       int Searchspot (Node *A, char B);
       void Printans (Node *A, char ans[], int x);

       int main () {
        int i,j,x,z;
        int check=0;
        FILE *point;
        char arr[100];
        int a;
        int m=0;
        int Sizec;
       // printf("์ง„ํ–‰์ค‘");
         Node *tree = (Node *)malloc(sizeof(Node));
       // printf("์ง„ํ–‰์ค‘");
        point=fopen("D://file.txt","r");
ํ”„๋กœ๊ทธ๋žจ              if(point==NULL)
                  {
์ˆ˜์ •์•ˆ                          return 1;
                  }

                  while(1) //ํ…์ŠคํŠธ ํŒŒ์ผ์— ์ €์žฅ๋˜์–ด ์žˆ๋Š” ๋ฌธ์žฅ๋“ค์„ ๋ฐฐ์—ด์— ๋„ฃ์–ด์„œ ์ €์žฅ.
                  {
                             a=fgetc(point);
                             if((a>=65 && a<=90) || (a>=97 && a<=122))
                             {
                                        arr[m]=a;
                                        if(a==EOF)
                                        {
                                                   break;
                                        }
                                        else
                                        {
                                                   m++;
                                        }
                             }
                             else if(a==' ' || a=='n')
                             {
                                        arr[m]=' ';
                                        if(a==EOF)
                                        {
                                                   break;
                                        }
                                        else
                                        {
                                                   m++;
                                        }
                             }
                             else
                             {
                                        if(a==EOF)
                                        {
                                                   break;
                                        }
                             }
                  }
                  fclose(point);
                  for(i=0;i<m;i++) //๋ฐฐ์—ด์— ์ €์žฅ๋œ ๋ฌธ์ž๋“ค์„ ์†Œ๋ฌธ์ž๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ ๋‹ค์‹œ ๋ฐฐ์—ด์— ์ €์žฅ.




                                               - 8 -
{
                           if(arr[i]>=65 && arr[i]<=90)
                           {
                                       arr[i]=arr[i]+32;
                           }
                           printf("%c",arr[i]);
                }
           fclose(point);
printf("n");

    Sizec = m;
    i = 0;
    j = 1;
    z = 2;
    m = 0;
    tree[i] = AddNode('R');
                for(;;) {//ํ…์ŠคํŠธ ํŒŒ์ผ์— ์ €์žฅ๋˜์–ด ์žˆ๋Š” ๋ฌธ์žฅ๋“ค์„ ๋ฐฐ์—ด์— ๋„ฃ์–ด์„œ ์ €์žฅ.

                           if(arr[m]>='a' && arr[m]<='z') {// ์•ŒํŒŒ๋ฒณ์ด๋ฉด ๋…ธ๋“œ ์ง„ํ–‰
                           printf("%cn",arr[m]);
                                     check = Search(&tree[i],arr[m]); // ๋…ธ๋“œ ์žˆ๋Š”์ง€ ํ™•์ธ



                                         if (check == 0 ) { // ๋…ธ๋“œ๊ฐ€ ์—†์œผ๋ฉด ๋…ธ๋“œ ์ถ”๊ฐ€ ํ•˜๊ณ  ์•„๋ž˜ ๋…ธ๋“œ๋กœ ์ด๋™.
                    tree[j] = AddNode(arr[m]);
                    tree[j].spot = j;//๋…ธ๋“œ ์œ„์น˜๋ฅผ ์ €์žฅ.
                    tree[i] = addtree(&tree[i],&tree[j]);
                    i = j; // i๋Š” ์ง„ํ–‰ ๋…ธ๋“œ
                    j++; // ๋…ธ๋“œ ์ƒ์„ฑ ์œ„์น˜
                               } else {
                               i = Searchspot(&tree[i],arr[m]);
                                 printf("%d - %cn",i,tree[i].name);
                               } // ๋…ธ๋“œ๊ฐ€ ์žˆ์œผ๋ฉด ๊ทธ๋Œ€๋กœ ์œ„์น˜๋งŒ ์ด๋™.




                             } else if(arr[m]==' ' || arr[m]=='n') {     // ๊ณต๋ฐฑ์ด๋‚˜ n ์ผ์‹œ, ์นด์šดํ„ฐ ์ฆ๊ฐ€.
๊ทธ๋ฆฌ๊ณ  root๋กœ ๋ณต๊ท€.
                              tree[i].count++; // ๋‹จ์–ด ๊ฐฏ์ˆ˜ ํ‘œ๊ธฐ
                              tree[i].page[z]=1; // ๋“ฑ์žฅ ํŽ˜์ด์ง€ ํ‘œ๊ธฐ
                              i = 0;
                              } else if(arr[m]=='.') {// ์ž„์˜๋กœ ๋‹ค์ŒํŽ˜์ด์ง€๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๊ธฐํ˜ธ๋ฅผ + ๋กœ ์ •์˜ํ•จ.
                                     z++;
                              } else if(arr[m]==EOF) {break; // ์•„๋ฌด ๊ฒƒ๋„ ์—†์„ ์‹œ ์ข…๋ฃŒ
                              }
                              if (Sizec < m) break;
                              m++;
                }

 char                                                    ANS[50]                                              =
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}; // ์˜๋‹จ์–ด ์ตœ
์žฅ ๊ธธ์ด ๋‹จ์–ด๋Š” 1000์ž๊ฐ€ ๋„˜์–ด๊ฐ€์ง€๋งŒ ์ผ๋ฐ˜์ ์œผ๋กœ 50์ž ๋ฏธ๋งŒ.
    printf("nWord Count Linesn");

    Printans(&tree[0],ANS,0); // ์ถœ๋ ฅ

                system("PAUSE");
                        getch();
          return 0;
}

Node addtree (Node *A, Node *B) {

        for (int i = 0; i < 26 ; i++) {
            if (A->link[i] == NULL) {
                                 A -> link[i] = B;
                                 printf("%c์˜ LINK%d์— %c๋ฅผ ์‚ฝ์ž… n",A -> name,i,B -> name);
                                 break;
                             } else {}

            }

        return *A;




                                                - 9 -
}



Node AddNode (char A) {

     Node *B = (Node *)malloc(sizeof(Node));
     B->name = A;
     for (int i = 0; i < 26 ; i++) {
                                 B->link[i] = NULL;
                                 B->page[i] = 0;

            }
                B->count = 0;
                B -> spot = 0;
     return *B;
     }

Node Delnode (Node *A, char B) {

     for (int i = 0; i < 26 ; i++) {
         if (A -> link[i] != NULL ) {
         if (A -> link[i] -> name == B) {
                A -> link[i] = NULL;
                printf("%c์— LINK&d์— %c๋ฅผ ์‚ญ์ œ n",A -> name,i,B); }
                }
            }

return *A;
     }

int Search (Node *A, char B) {
     int x = 0;
     int i;
     for (i = 0; i < 26 ; i++) {
            if (A -> link[i] != NULL ) {
            if (A -> link[i] -> name == B) {
            x = 1;
            break;
            }
            } else {break;}
            }

            return x;
     }

int Searchspot (Node *A, char B) {


     for (int i = 0; i < 26 ; i++) {
            if (A -> link[i] != NULL ) {
            if (A -> link[i] -> name == B) {return A -> link[i] -> spot;}
            }
            }

return 0;
     }



void Printans (Node *A, char ans[], int x) {
     ans[x] = A -> name;
     int i;
     int j;




                                            - 10 -
if (A -> count != 0) {
                            printf("๋‹จ์–ด : ");
                            for (j=0; j<=x; j++) {
                            printf("%c", ans[j]);
                            }
          //                  printf("%c", A->name);
                                printf("๋“ฑ์žฅ ํšŸ์ˆ˜ : ");
                                printf("%d",A->count);

                                printf("๋“ฑ์žฅ ํŽ˜์ด์ง€ : ");
                                for (j=0; j<26; j++) {
                                    if (A ->page[j] == 1) {
                                           printf("%d n",j+1);
                                           }
                                    }
                                }
               for (i = 0 ; i < 26 ; i++) {
                     if (A->link[i] != NULL) {
                     if (A -> spot != 0) x+=1;
                     Printans( A->link[i],ans,x);
                                        } else {}
                     }
               return;
          } // ์ถœ๋ ฅ


          ์ดˆ์•ˆ ์†Œ์Šค์—์„œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜์˜€๋Š”๋ฐ ์˜ค๋ฅ˜๋ฅผ ์ฐพ์ง€ ๋ชปํ•˜์—ฌ ๋ฌธ์ž์—ด์„ ๋ฐฐ์—ด์— ์˜ฎ๊ฒจํ’€์–ด๋ณด๊ธฐ
 ํšŒ์˜๋‚ด์šฉ
          ๋กœ ํ•˜์—ฌ ๋ถ„๋ฆฌ ์‹œ์ผœ๋ณด๊ธฐ๋กœ ํ•˜์˜€์Œ.
          ๋ฌธ์ž์—ด์„ ๋ฐฐ์—ด์— ์˜ฎ๊ฒจ ํ’€์–ด ๋ณธ ํ›„ else๊ตฌ๋ฌธ์„ if ๊ตฌ๋ฌธ์œผ๋กœ ๋ฐ”๊พผํ›„ ์‹คํ–‰ํ•˜๋‹ˆ ์˜ค๋ฅ˜๋Š” ๋ฐœ์ƒ
 ๋ฌธ์ œ์       ํ•˜์ง€ ์•Š์•˜์Œ. ๊ทธ๋Ÿฌ๋‚˜ 6๊ธ€์ž๋ฅผ ๋„˜์–ด์„œ ์ž…๋ ฅ ๋  ๊ฒฝ์šฐ ์˜ค๋ฅ˜๊ฐ€๋ฐœ์ƒ๋จ.
          ์˜ค๋ฅ˜๋ฅผ ์ฐพ์œผ๋ ค ํ•˜์˜€์œผ๋‚˜ ์ฐพ์ง€ ๋ชปํ•˜์˜€์Œ.
                                                    ๊ฒฐ๊ณผ ๋ฐœํ‘œ
          #include   <stdio.h>
          #include   <stdlib.h>
          #include   <conio.h>
          #include   <windows.h>
          #include   <string.h>
          struct Node {
                           char name;
                           Node *link[26];
                           int page[26];
                           int count;
                           int spot;
                           };
          Node addtree (Node *A, Node *B);
          Node AddNode (char A);
          Node Delnode (Node *A, char B);
          int Search (Node *A, char B);
          int Searchspot (Node *A, char B);
ํ”„๋กœ๊ทธ๋žจ ์†Œ์Šค   void Printans (Node *A, char ans[], int x);

          int main () {
           int i,j,x,z;
           int check=0;
           FILE *point;
           char arr[100];
           int a;
           int m=0;
           int Sizec;
          // printf("์ง„ํ–‰์ค‘");
            Node *tree = (Node *)malloc(sizeof(Node));
          // printf("์ง„ํ–‰์ค‘");
           point=fopen("C://file.txt","r");
                         if(point==NULL)
                         {




                                                          - 11 -
return 1;
           }

           while(1) //ํ…์ŠคํŠธ ํŒŒ์ผ์— ์ €์žฅ๋˜์–ด ์žˆ๋Š” ๋ฌธ์žฅ๋“ค์„ ๋ฐฐ์—ด์— ๋„ฃ์–ด์„œ ์ €์žฅ.
           {
                      a=fgetc(point);
                      if((a>=65 && a<=90) || (a>=97 && a<=122) || (a == '+'))
                      {
                                 arr[m]=a;
                                 if(a==EOF)
                                 {
                                            break;
                                 }
                                 else
                                 {
                                            m++;
                                 }
                      }
                      else if(a==' ' || a=='n')
                      {
                                 arr[m]=' ';
                                 if(a==EOF)
                                 {
                                            break;
                                 }
                                 else
                                 {
                                            m++;
                                 }
                      }
                      else
                      {
                                 if(a==EOF)
                                 {
                                            break;
                                 }
                      }
           }
           fclose(point);
           for(i=0;i<m;i++) //๋ฐฐ์—ด์— ์ €์žฅ๋œ ๋ฌธ์ž๋“ค์„ ์†Œ๋ฌธ์ž๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ ๋‹ค์‹œ ๋ฐฐ์—ด์— ์ €์žฅ.
           {
                      if(arr[i]>=65 && arr[i]<=90)
                      {
                                  arr[i]=arr[i]+32;
                      }
                      printf("%c",arr[i]);
           }
           fclose(point);
printf("n");
 Sizec = m;
 i = 0;
 j = 1;
 z = 0;
 m = 0;
 tree[i] = AddNode('R');
           for(;;) {//ํ…์ŠคํŠธ ํŒŒ์ผ์— ์ €์žฅ๋˜์–ด ์žˆ๋Š” ๋ฌธ์žฅ๋“ค์„ ๋ฐฐ์—ด์— ๋„ฃ์–ด์„œ ์ €์žฅ.

                      if(arr[m]>='a' && arr[m]<='z') {// ์•ŒํŒŒ๋ฒณ์ด๋ฉด ๋…ธ๋“œ ์ง„ํ–‰
//                     printf("%cn",arr[m]);
                                 check = Search(&tree[i],arr[m]); // ๋…ธ๋“œ ์žˆ๋Š”์ง€ ํ™•์ธ

                                    if (check == 0 ) { // ๋…ธ๋“œ๊ฐ€ ์—†์œผ๋ฉด ๋…ธ๋“œ ์ถ”๊ฐ€ ํ•˜๊ณ  ์•„๋ž˜ ๋…ธ๋“œ๋กœ ์ด๋™.
               tree[j] = AddNode(arr[m]);
               tree[j].spot = j;//๋…ธ๋“œ ์œ„์น˜๋ฅผ ์ €์žฅ.
               tree[i] = addtree(&tree[i],&tree[j]);
               i = j; // i๋Š” ์ง„ํ–‰ ๋…ธ๋“œ
               j++; // ๋…ธ๋“œ ์ƒ์„ฑ ์œ„์น˜
                          } else {
                          i = Searchspot(&tree[i],arr[m]);
                            printf("%c๊ฐ€ ์กด์žฌํ•˜์—ฌ ๋‚ด๋ ค๊ฐ‘๋‹ˆ๋‹ค.n",tree[i].name);
                          } // ๋…ธ๋“œ๊ฐ€ ์žˆ์œผ๋ฉด ๊ทธ๋Œ€๋กœ ์œ„์น˜๋งŒ ์ด๋™.
                        }

                        if(arr[m]==' ' || arr[m]=='n') {      // ๊ณต๋ฐฑ์ด๋‚˜ n ์ผ์‹œ, ์นด์šดํ„ฐ ์ฆ๊ฐ€. ๊ทธ๋ฆฌ๊ณ 
root๋กœ ๋ณต๊ท€.
                            tree[i].count++; // ๋‹จ์–ด ๊ฐฏ์ˆ˜ ํ‘œ๊ธฐ
                            tree[i].page[z]=1; // ๋“ฑ์žฅ ํŽ˜์ด์ง€ ํ‘œ๊ธฐ
                            i = 0;
                            }
                            if(arr[m]=='+') {// ์ž„์˜๋กœ ๋‹ค์ŒํŽ˜์ด์ง€๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๊ธฐํ˜ธ๋ฅผ + ๋กœ ์ •์˜ํ•จ.
                                   z++;




                                         - 12 -
}
                               if(arr[m]==EOF) {break; // ์•„๋ฌด ๊ฒƒ๋„ ์—†์„ ์‹œ ์ข…๋ฃŒ
                               }
                               if (Sizec < m) break;
                               m++;
                 }




 char                                                    ANS[50]                                              =
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}; // ์˜๋‹จ์–ด ์ตœ
์žฅ ๊ธธ์ด ๋‹จ์–ด๋Š” 1000์ž๊ฐ€ ๋„˜์–ด๊ฐ€์ง€๋งŒ ์ผ๋ฐ˜์ ์œผ๋กœ 50์ž ๋ฏธ๋งŒ.
    printf("nWord Count Linesn");

    Printans(&tree[0],ANS,0); // ์ถœ๋ ฅ

                 system("PAUSE");
                         getch();
           return 0;
}
Node addtree (Node *A, Node *B) {

       for (int i = 0; i < 26 ; i++) {
             if (A->link[i] == NULL) {
                                  A -> link[i] = B;
                                  printf("%c์˜ LINK%d์— %c๋ฅผ ์‚ฝ์ž… n",A -> name,i,B -> name);
                                  break;
                              } else {}

             }
             return *A;
       }
Node AddNode (char A) {

       Node *B = (Node *)malloc(sizeof(Node));
       B->name = A;
       for (int i = 0; i < 26 ; i++) {
                                      B->link[i] = NULL;
                                      B->page[i] = 0;

             }
                     B->count = 0;
                     B -> spot = 0;
       return *B;
       }
Node Delnode (Node *A, char B) {

       for (int i = 0; i < 26 ; i++) {
           if (A -> link[i] != NULL ) {
           if (A -> link[i] -> name == B) {
                     A -> link[i] = NULL;
                     printf("%c์— LINK&d์— %c๋ฅผ ์‚ญ์ œ n",A -> name,i,B); }
                     }
             }
return *A;
       }
int Search (Node *A, char B) {
       int x = 0;
       int i;
       for (i = 0; i < 26 ; i++) {
             if (A -> link[i] != NULL ) {
             if (A -> link[i] -> name == B) {
             x = 1;
             break;
             }




                                                 - 13 -
} else {break;}
                   }

                   return x;
            }
       int Searchspot (Node *A, char B) {


            for (int i = 0; i < 26 ; i++) {
                   if (A -> link[i] != NULL ) {
                   if (A -> link[i] -> name == B) {return A -> link[i] -> spot;}
                   }
                   }
       return 0;
            }

       void Printans (Node *A, char ans[], int x) {
            ans[x] = A -> name;
            int i;
            int j;

                   if (A -> count != 0 && A -> name != 'R' ) {
                          printf("๋‹จ์–ด : ");
                          for (j=0; j<=x; j++) {
                          printf("%c", ans[j]);
                          }
       //                   printf("%c", A->name);
                         printf("๋“ฑ์žฅ ํšŸ์ˆ˜ : ");
                         printf("%d",A->count);

                         printf("๋“ฑ์žฅ ํŽ˜์ด์ง€ : ");
                         for (j=0; j<26; j++) {
                               if (A ->page[j] == 1) {
                                      printf("%d n",j+1);
                                      }
                               }
                         }
            for (i = 0 ; i < 26 ; i++) {
                   if (A->link[i] != NULL) {
                   if (A -> spot != 0) x+=1;
                   Printans( A->link[i],ans,x);
                                   } else {}
                   }
            return;
       } // ์ถœ๋ ฅ




๋ฌธ์ œํ™”๋ฉด




                                                     - 14 -
๋งจ์œ„ ๋…ธ๋“œ๋Š” ๋น„์›€
                                       โ†“
                space ๋ถ€๋ถ„์„ ๊ธฐ์ค€์œผ๋กœ ๋‹จ์–ด๋ฅผ ๋–ผ์–ด๋‚ด๊ณ  ๋งจ ์•ž ๊ธ€์ž๋ฅผ 2level ๋…ธ๋“œ์—
                                      ๋„ฃ๋Š”๋‹ค.
                                       โ†“
์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ฐœ์š”          ๋งจ์•ž ๊ธ€์ž๊ฐ€ ๊ฐ™์„ ๊ฒฝ์šฐ ๊ทธ๋‹ค์Œ ํ•˜์œ„ ๋ ˆ๋ฒจ์— ๋‹ค์Œ ๋ฌธ์ž๋ฅผ ๋„ฃ๋Š”๋‹ค.
                                       โ†“
                      ์—†์„ ๊ฒฝ์šฐ ๋‹จ์–ด๋ฅผ ์ˆœ์„œ๋Œ€๋กœ ํ•œ ๋ฌธ์ž์”ฉ ๋„ฃ๋Š”๋‹ค.
                                       โ†“
                 ๋‘ ๊ฐœ์˜ ํŠธ๋ฆฌ(1line,2line)๋ฅผ ๋งŒ๋“ค๊ณ  ๋น„๊ตํ•˜์—ฌ ๋…ธ๋“œ๋ฅผ ๋น„๊ต ํ•˜์—ฌ
                                      ์ถœ๋ ฅํ•œ๋‹ค




          ๋ฌธ์ž ์ž…๋ ฅ์ด 6๊ฐœ ์ด์ƒ ๋“ค์–ด๊ฐ€๋ฉด ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒ.
          ์ž…๋ ฅ ์–‘์‹์€ +๊ฐ€ ํŽ˜์ด์ง€ ๊ตฌ๋ถ„์„ ์ด๊ณ  ๋งˆ์ง€๋ง‰์— ๋„์›Œ์“ฐ๊ธฐ๋‚˜ ์—”ํ„ฐ๋ฅผ ํ•˜์—ฌ์•ผ ์ข…๋ฃŒ.
 ์ตœ์ข… ๋ฐ˜์„ฑ
          ๊ท ํ˜•ํŠธ๋ฆฌ์˜ ๊ตฌํ˜„๊ณผ์ •์—์„œ ๊ตฌํ˜„์„ ํ•˜๊ธฐ๊ฐ€ ์–ด๋ ค์›Œ์„œ ๋ฐฐ์—ด๋กœ ๋ฐ›์•„์„œ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ์‚ฌ
          ์šฉ ํ•˜์˜€์Šต๋‹ˆ๋‹ค.




                             - 15 -

Weitere รคhnliche Inhalte

Was ist angesagt?

ํ…์„œํ”Œ๋กœ์šฐ ๊ธฐ์ดˆ ์ดํ•ดํ•˜๊ธฐ
ํ…์„œํ”Œ๋กœ์šฐ ๊ธฐ์ดˆ ์ดํ•ดํ•˜๊ธฐ ํ…์„œํ”Œ๋กœ์šฐ ๊ธฐ์ดˆ ์ดํ•ดํ•˜๊ธฐ
ํ…์„œํ”Œ๋กœ์šฐ ๊ธฐ์ดˆ ์ดํ•ดํ•˜๊ธฐ Yong Joon Moon
ย 
๊ฐ•์˜์ž๋ฃŒ3
๊ฐ•์˜์ž๋ฃŒ3๊ฐ•์˜์ž๋ฃŒ3
๊ฐ•์˜์ž๋ฃŒ3Young Wook Kim
ย 
Python+numpy pandas 3แ„‘แ…งแ†ซ
Python+numpy pandas 3แ„‘แ…งแ†ซPython+numpy pandas 3แ„‘แ…งแ†ซ
Python+numpy pandas 3แ„‘แ…งแ†ซYong Joon Moon
ย 
2012 Dm B3 ๋ณด๊ณ ์„œ(06๋ฐ•์ฐฌํฅ)
2012 Dm B3 ๋ณด๊ณ ์„œ(06๋ฐ•์ฐฌํฅ)2012 Dm B3 ๋ณด๊ณ ์„œ(06๋ฐ•์ฐฌํฅ)
2012 Dm B3 ๋ณด๊ณ ์„œ(06๋ฐ•์ฐฌํฅ)pchmago
ย 
Python array.array ๋ชจ๋“ˆ ์ดํ•ดํ•˜๊ธฐ
Python array.array ๋ชจ๋“ˆ ์ดํ•ดํ•˜๊ธฐPython array.array ๋ชจ๋“ˆ ์ดํ•ดํ•˜๊ธฐ
Python array.array ๋ชจ๋“ˆ ์ดํ•ดํ•˜๊ธฐYong Joon Moon
ย 
แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ Numpy แ„‰แ…ฅแ†ซแ„’แ…งแ†ผแ„ƒแ…ขแ„‰แ…ฎ แ„‹แ…ตแ„’แ…ขแ„’แ…กแ„€แ…ต
แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ Numpy แ„‰แ…ฅแ†ซแ„’แ…งแ†ผแ„ƒแ…ขแ„‰แ…ฎ แ„‹แ…ตแ„’แ…ขแ„’แ…กแ„€แ…ตแ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ Numpy แ„‰แ…ฅแ†ซแ„’แ…งแ†ผแ„ƒแ…ขแ„‰แ…ฎ แ„‹แ…ตแ„’แ…ขแ„’แ…กแ„€แ…ต
แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ Numpy แ„‰แ…ฅแ†ซแ„’แ…งแ†ผแ„ƒแ…ขแ„‰แ…ฎ แ„‹แ…ตแ„’แ…ขแ„’แ…กแ„€แ…ตYong Joon Moon
ย 
[HaU] ์‹ ์ž… ๊ธฐ์ˆ  ๋ฉด์ ‘ ์ค€๋น„ java
[HaU] ์‹ ์ž… ๊ธฐ์ˆ  ๋ฉด์ ‘ ์ค€๋น„ java[HaU] ์‹ ์ž… ๊ธฐ์ˆ  ๋ฉด์ ‘ ์ค€๋น„ java
[HaU] ์‹ ์ž… ๊ธฐ์ˆ  ๋ฉด์ ‘ ์ค€๋น„ java์œ ๋ฆฌ ํ•˜
ย 
แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซแ„Œแ…ฅแ†ผแ„…แ…ต 20160130
แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซแ„Œแ…ฅแ†ผแ„…แ…ต 20160130แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซแ„Œแ…ฅแ†ผแ„…แ…ต 20160130
แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซแ„Œแ…ฅแ†ผแ„…แ…ต 20160130Yong Joon Moon
ย 
Python ์ดํ•ดํ•˜๊ธฐ 20160815
Python ์ดํ•ดํ•˜๊ธฐ 20160815Python ์ดํ•ดํ•˜๊ธฐ 20160815
Python ์ดํ•ดํ•˜๊ธฐ 20160815Yong Joon Moon
ย 
ํŒŒ์ด์ฌ ๋ฌธ์ž์—ด ์ดํ•ดํ•˜๊ธฐ
ํŒŒ์ด์ฌ ๋ฌธ์ž์—ด ์ดํ•ดํ•˜๊ธฐํŒŒ์ด์ฌ ๋ฌธ์ž์—ด ์ดํ•ดํ•˜๊ธฐ
ํŒŒ์ด์ฌ ๋ฌธ์ž์—ด ์ดํ•ดํ•˜๊ธฐYong Joon Moon
ย 
แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ แ„†แ…ฎแ†ซแ„Œแ…กแ„‹แ…งแ†ฏ แ„‹แ…ตแ„’แ…ขแ„’แ…กแ„€แ…ต
แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ แ„†แ…ฎแ†ซแ„Œแ…กแ„‹แ…งแ†ฏ แ„‹แ…ตแ„’แ…ขแ„’แ…กแ„€แ…ตแ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ แ„†แ…ฎแ†ซแ„Œแ…กแ„‹แ…งแ†ฏ แ„‹แ…ตแ„’แ…ขแ„’แ…กแ„€แ…ต
แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ แ„†แ…ฎแ†ซแ„Œแ…กแ„‹แ…งแ†ฏ แ„‹แ…ตแ„’แ…ขแ„’แ…กแ„€แ…ตYong Joon Moon
ย 
แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ Collections แ„†แ…ฉแ„ƒแ…ฒแ†ฏ แ„‹แ…ตแ„’แ…ขแ„’แ…กแ„€แ…ต
แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ Collections แ„†แ…ฉแ„ƒแ…ฒแ†ฏ แ„‹แ…ตแ„’แ…ขแ„’แ…กแ„€แ…ตแ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ Collections แ„†แ…ฉแ„ƒแ…ฒแ†ฏ แ„‹แ…ตแ„’แ…ขแ„’แ…กแ„€แ…ต
แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ Collections แ„†แ…ฉแ„ƒแ…ฒแ†ฏ แ„‹แ…ตแ„’แ…ขแ„’แ…กแ„€แ…ตYong Joon Moon
ย 
์ž๋ฃŒ๊ตฌ์กฐ2๋ณด๊ณ ์„œ
์ž๋ฃŒ๊ตฌ์กฐ2๋ณด๊ณ ์„œ์ž๋ฃŒ๊ตฌ์กฐ2๋ณด๊ณ ์„œ
์ž๋ฃŒ๊ตฌ์กฐ2๋ณด๊ณ ์„œKimChangHoen
ย 
์„ ํ˜• ๋Œ€์ˆ˜ํ•™
์„ ํ˜• ๋Œ€์ˆ˜ํ•™์„ ํ˜• ๋Œ€์ˆ˜ํ•™
์„ ํ˜• ๋Œ€์ˆ˜ํ•™Chang Su Youk
ย 
แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ+แ„Œแ…ฅแ†ผแ„€แ…ฒแ„‘แ…ญแ„’แ…งแ†ซแ„‰แ…ตแ†จ+แ„‹แ…ตแ„’แ…ขแ„’แ…กแ„€แ…ต 20160301
แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ+แ„Œแ…ฅแ†ผแ„€แ…ฒแ„‘แ…ญแ„’แ…งแ†ซแ„‰แ…ตแ†จ+แ„‹แ…ตแ„’แ…ขแ„’แ…กแ„€แ…ต 20160301แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ+แ„Œแ…ฅแ†ผแ„€แ…ฒแ„‘แ…ญแ„’แ…งแ†ซแ„‰แ…ตแ†จ+แ„‹แ…ตแ„’แ…ขแ„’แ…กแ„€แ…ต 20160301
แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ+แ„Œแ…ฅแ†ผแ„€แ…ฒแ„‘แ…ญแ„’แ…งแ†ซแ„‰แ…ตแ†จ+แ„‹แ…ตแ„’แ…ขแ„’แ…กแ„€แ…ต 20160301Yong Joon Moon
ย 
Tensorflow
TensorflowTensorflow
Tensorflowchs71
ย 
2012 Ds 01
2012 Ds 012012 Ds 01
2012 Ds 01Jungyerin
ย 

Was ist angesagt? (17)

ํ…์„œํ”Œ๋กœ์šฐ ๊ธฐ์ดˆ ์ดํ•ดํ•˜๊ธฐ
ํ…์„œํ”Œ๋กœ์šฐ ๊ธฐ์ดˆ ์ดํ•ดํ•˜๊ธฐ ํ…์„œํ”Œ๋กœ์šฐ ๊ธฐ์ดˆ ์ดํ•ดํ•˜๊ธฐ
ํ…์„œํ”Œ๋กœ์šฐ ๊ธฐ์ดˆ ์ดํ•ดํ•˜๊ธฐ
ย 
๊ฐ•์˜์ž๋ฃŒ3
๊ฐ•์˜์ž๋ฃŒ3๊ฐ•์˜์ž๋ฃŒ3
๊ฐ•์˜์ž๋ฃŒ3
ย 
Python+numpy pandas 3แ„‘แ…งแ†ซ
Python+numpy pandas 3แ„‘แ…งแ†ซPython+numpy pandas 3แ„‘แ…งแ†ซ
Python+numpy pandas 3แ„‘แ…งแ†ซ
ย 
2012 Dm B3 ๋ณด๊ณ ์„œ(06๋ฐ•์ฐฌํฅ)
2012 Dm B3 ๋ณด๊ณ ์„œ(06๋ฐ•์ฐฌํฅ)2012 Dm B3 ๋ณด๊ณ ์„œ(06๋ฐ•์ฐฌํฅ)
2012 Dm B3 ๋ณด๊ณ ์„œ(06๋ฐ•์ฐฌํฅ)
ย 
Python array.array ๋ชจ๋“ˆ ์ดํ•ดํ•˜๊ธฐ
Python array.array ๋ชจ๋“ˆ ์ดํ•ดํ•˜๊ธฐPython array.array ๋ชจ๋“ˆ ์ดํ•ดํ•˜๊ธฐ
Python array.array ๋ชจ๋“ˆ ์ดํ•ดํ•˜๊ธฐ
ย 
แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ Numpy แ„‰แ…ฅแ†ซแ„’แ…งแ†ผแ„ƒแ…ขแ„‰แ…ฎ แ„‹แ…ตแ„’แ…ขแ„’แ…กแ„€แ…ต
แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ Numpy แ„‰แ…ฅแ†ซแ„’แ…งแ†ผแ„ƒแ…ขแ„‰แ…ฎ แ„‹แ…ตแ„’แ…ขแ„’แ…กแ„€แ…ตแ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ Numpy แ„‰แ…ฅแ†ซแ„’แ…งแ†ผแ„ƒแ…ขแ„‰แ…ฎ แ„‹แ…ตแ„’แ…ขแ„’แ…กแ„€แ…ต
แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ Numpy แ„‰แ…ฅแ†ซแ„’แ…งแ†ผแ„ƒแ…ขแ„‰แ…ฎ แ„‹แ…ตแ„’แ…ขแ„’แ…กแ„€แ…ต
ย 
[HaU] ์‹ ์ž… ๊ธฐ์ˆ  ๋ฉด์ ‘ ์ค€๋น„ java
[HaU] ์‹ ์ž… ๊ธฐ์ˆ  ๋ฉด์ ‘ ์ค€๋น„ java[HaU] ์‹ ์ž… ๊ธฐ์ˆ  ๋ฉด์ ‘ ์ค€๋น„ java
[HaU] ์‹ ์ž… ๊ธฐ์ˆ  ๋ฉด์ ‘ ์ค€๋น„ java
ย 
แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซแ„Œแ…ฅแ†ผแ„…แ…ต 20160130
แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซแ„Œแ…ฅแ†ผแ„…แ…ต 20160130แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซแ„Œแ…ฅแ†ผแ„…แ…ต 20160130
แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซแ„Œแ…ฅแ†ผแ„…แ…ต 20160130
ย 
Python ์ดํ•ดํ•˜๊ธฐ 20160815
Python ์ดํ•ดํ•˜๊ธฐ 20160815Python ์ดํ•ดํ•˜๊ธฐ 20160815
Python ์ดํ•ดํ•˜๊ธฐ 20160815
ย 
ํŒŒ์ด์ฌ ๋ฌธ์ž์—ด ์ดํ•ดํ•˜๊ธฐ
ํŒŒ์ด์ฌ ๋ฌธ์ž์—ด ์ดํ•ดํ•˜๊ธฐํŒŒ์ด์ฌ ๋ฌธ์ž์—ด ์ดํ•ดํ•˜๊ธฐ
ํŒŒ์ด์ฌ ๋ฌธ์ž์—ด ์ดํ•ดํ•˜๊ธฐ
ย 
แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ แ„†แ…ฎแ†ซแ„Œแ…กแ„‹แ…งแ†ฏ แ„‹แ…ตแ„’แ…ขแ„’แ…กแ„€แ…ต
แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ แ„†แ…ฎแ†ซแ„Œแ…กแ„‹แ…งแ†ฏ แ„‹แ…ตแ„’แ…ขแ„’แ…กแ„€แ…ตแ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ แ„†แ…ฎแ†ซแ„Œแ…กแ„‹แ…งแ†ฏ แ„‹แ…ตแ„’แ…ขแ„’แ…กแ„€แ…ต
แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ แ„†แ…ฎแ†ซแ„Œแ…กแ„‹แ…งแ†ฏ แ„‹แ…ตแ„’แ…ขแ„’แ…กแ„€แ…ต
ย 
แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ Collections แ„†แ…ฉแ„ƒแ…ฒแ†ฏ แ„‹แ…ตแ„’แ…ขแ„’แ…กแ„€แ…ต
แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ Collections แ„†แ…ฉแ„ƒแ…ฒแ†ฏ แ„‹แ…ตแ„’แ…ขแ„’แ…กแ„€แ…ตแ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ Collections แ„†แ…ฉแ„ƒแ…ฒแ†ฏ แ„‹แ…ตแ„’แ…ขแ„’แ…กแ„€แ…ต
แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ Collections แ„†แ…ฉแ„ƒแ…ฒแ†ฏ แ„‹แ…ตแ„’แ…ขแ„’แ…กแ„€แ…ต
ย 
์ž๋ฃŒ๊ตฌ์กฐ2๋ณด๊ณ ์„œ
์ž๋ฃŒ๊ตฌ์กฐ2๋ณด๊ณ ์„œ์ž๋ฃŒ๊ตฌ์กฐ2๋ณด๊ณ ์„œ
์ž๋ฃŒ๊ตฌ์กฐ2๋ณด๊ณ ์„œ
ย 
์„ ํ˜• ๋Œ€์ˆ˜ํ•™
์„ ํ˜• ๋Œ€์ˆ˜ํ•™์„ ํ˜• ๋Œ€์ˆ˜ํ•™
์„ ํ˜• ๋Œ€์ˆ˜ํ•™
ย 
แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ+แ„Œแ…ฅแ†ผแ„€แ…ฒแ„‘แ…ญแ„’แ…งแ†ซแ„‰แ…ตแ†จ+แ„‹แ…ตแ„’แ…ขแ„’แ…กแ„€แ…ต 20160301
แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ+แ„Œแ…ฅแ†ผแ„€แ…ฒแ„‘แ…ญแ„’แ…งแ†ซแ„‰แ…ตแ†จ+แ„‹แ…ตแ„’แ…ขแ„’แ…กแ„€แ…ต 20160301แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ+แ„Œแ…ฅแ†ผแ„€แ…ฒแ„‘แ…ญแ„’แ…งแ†ซแ„‰แ…ตแ†จ+แ„‹แ…ตแ„’แ…ขแ„’แ…กแ„€แ…ต 20160301
แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ+แ„Œแ…ฅแ†ผแ„€แ…ฒแ„‘แ…ญแ„’แ…งแ†ซแ„‰แ…ตแ†จ+แ„‹แ…ตแ„’แ…ขแ„’แ…กแ„€แ…ต 20160301
ย 
Tensorflow
TensorflowTensorflow
Tensorflow
ย 
2012 Ds 01
2012 Ds 012012 Ds 01
2012 Ds 01
ย 

Andere mochten auch

2012 Ds 03
2012 Ds 032012 Ds 03
2012 Ds 03Jungyerin
ย 
2012 Dm 01
2012 Dm 012012 Dm 01
2012 Dm 01Jungyerin
ย 
2012 Ds 06
2012 Ds 062012 Ds 06
2012 Ds 06Jungyerin
ย 
2012 Ds 05
2012 Ds 052012 Ds 05
2012 Ds 05Jungyerin
ย 
์ž๋ฃŒ๊ตฌ์กฐ Project5
์ž๋ฃŒ๊ตฌ์กฐ Project5์ž๋ฃŒ๊ตฌ์กฐ Project5
์ž๋ฃŒ๊ตฌ์กฐ Project5KoChungWook
ย 
๊ทธ๋ž˜ํ”„์˜ ์ตœ๋‹จ ๊ฒฝ๋กœ ์ฐพ๊ธฐ
๊ทธ๋ž˜ํ”„์˜ ์ตœ๋‹จ ๊ฒฝ๋กœ ์ฐพ๊ธฐ๊ทธ๋ž˜ํ”„์˜ ์ตœ๋‹จ ๊ฒฝ๋กœ ์ฐพ๊ธฐ
๊ทธ๋ž˜ํ”„์˜ ์ตœ๋‹จ ๊ฒฝ๋กœ ์ฐพ๊ธฐJung-Ho Kim
ย 

Andere mochten auch (6)

2012 Ds 03
2012 Ds 032012 Ds 03
2012 Ds 03
ย 
2012 Dm 01
2012 Dm 012012 Dm 01
2012 Dm 01
ย 
2012 Ds 06
2012 Ds 062012 Ds 06
2012 Ds 06
ย 
2012 Ds 05
2012 Ds 052012 Ds 05
2012 Ds 05
ย 
์ž๋ฃŒ๊ตฌ์กฐ Project5
์ž๋ฃŒ๊ตฌ์กฐ Project5์ž๋ฃŒ๊ตฌ์กฐ Project5
์ž๋ฃŒ๊ตฌ์กฐ Project5
ย 
๊ทธ๋ž˜ํ”„์˜ ์ตœ๋‹จ ๊ฒฝ๋กœ ์ฐพ๊ธฐ
๊ทธ๋ž˜ํ”„์˜ ์ตœ๋‹จ ๊ฒฝ๋กœ ์ฐพ๊ธฐ๊ทธ๋ž˜ํ”„์˜ ์ตœ๋‹จ ๊ฒฝ๋กœ ์ฐพ๊ธฐ
๊ทธ๋ž˜ํ”„์˜ ์ตœ๋‹จ ๊ฒฝ๋กœ ์ฐพ๊ธฐ
ย 

ร„hnlich wie 2012 Ds 04

DS_04
DS_04DS_04
DS_04whdwls7269
ย 
์ž๋ฃŒ๊ตฌ์กฐ Project4
์ž๋ฃŒ๊ตฌ์กฐ Project4์ž๋ฃŒ๊ตฌ์กฐ Project4
์ž๋ฃŒ๊ตฌ์กฐ Project4KoChungWook
ย 
์ž๋ฃŒ๊ตฌ์กฐ04
์ž๋ฃŒ๊ตฌ์กฐ04์ž๋ฃŒ๊ตฌ์กฐ04
์ž๋ฃŒ๊ตฌ์กฐ04herojoon1378
ย 
์ž๊ตฌ4๋ฒˆ
์ž๊ตฌ4๋ฒˆ์ž๊ตฌ4๋ฒˆ
์ž๊ตฌ4๋ฒˆkangseungwoo
ย 
[SOPT] ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ ๋ฐ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์Šคํ„ฐ๋”” - #04 : ํŠธ๋ฆฌ ๊ธฐ์ดˆ, ์ด์ง„ ํŠธ๋ฆฌ, ์šฐ์„ ์ˆœ์œ„ ํ
[SOPT] ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ ๋ฐ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์Šคํ„ฐ๋”” - #04 : ํŠธ๋ฆฌ ๊ธฐ์ดˆ, ์ด์ง„ ํŠธ๋ฆฌ, ์šฐ์„ ์ˆœ์œ„ ํ[SOPT] ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ ๋ฐ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์Šคํ„ฐ๋”” - #04 : ํŠธ๋ฆฌ ๊ธฐ์ดˆ, ์ด์ง„ ํŠธ๋ฆฌ, ์šฐ์„ ์ˆœ์œ„ ํ
[SOPT] ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ ๋ฐ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์Šคํ„ฐ๋”” - #04 : ํŠธ๋ฆฌ ๊ธฐ์ดˆ, ์ด์ง„ ํŠธ๋ฆฌ, ์šฐ์„ ์ˆœ์œ„ ํS.O.P.T - Shout Our Passion Together
ย 
CS Study - Data Structure ์ž๋ฃŒ ๊ตฌ์กฐ. Tree ๋ฐœํ‘œ์ž๋ฃŒ
CS Study - Data Structure ์ž๋ฃŒ ๊ตฌ์กฐ. Tree ๋ฐœํ‘œ์ž๋ฃŒCS Study - Data Structure ์ž๋ฃŒ ๊ตฌ์กฐ. Tree ๋ฐœํ‘œ์ž๋ฃŒ
CS Study - Data Structure ์ž๋ฃŒ ๊ตฌ์กฐ. Tree ๋ฐœํ‘œ์ž๋ฃŒJiwoo Choi
ย 
Project#4 Syntax Of Languages Hwp
Project#4 Syntax Of Languages HwpProject#4 Syntax Of Languages Hwp
Project#4 Syntax Of Languages HwpKimjeongmoo
ย 
[Swift] Data Structure - Binary Tree
[Swift] Data Structure - Binary Tree[Swift] Data Structure - Binary Tree
[Swift] Data Structure - Binary TreeBill Kim
ย 
์ด์‚ฐ์น˜์ˆ˜ํ•™ Project4
์ด์‚ฐ์น˜์ˆ˜ํ•™ Project4์ด์‚ฐ์น˜์ˆ˜ํ•™ Project4
์ด์‚ฐ์น˜์ˆ˜ํ•™ Project4KoChungWook
ย 
์ž๋ฃŒ๊ตฌ์กฐ ๊ทธ๋ž˜ํ”„ ๋ณด๊ณ ์„œ
์ž๋ฃŒ๊ตฌ์กฐ ๊ทธ๋ž˜ํ”„ ๋ณด๊ณ ์„œ์ž๋ฃŒ๊ตฌ์กฐ ๊ทธ๋ž˜ํ”„ ๋ณด๊ณ ์„œ
์ž๋ฃŒ๊ตฌ์กฐ ๊ทธ๋ž˜ํ”„ ๋ณด๊ณ ์„œmil23
ย 
Data Structure 2
Data Structure 2Data Structure 2
Data Structure 2yonsei
ย 
์ž๋ฃŒ๊ตฌ์กฐ 05 ์ตœ์ข… ๋ณด๊ณ ์„œ
์ž๋ฃŒ๊ตฌ์กฐ 05 ์ตœ์ข… ๋ณด๊ณ ์„œ์ž๋ฃŒ๊ตฌ์กฐ 05 ์ตœ์ข… ๋ณด๊ณ ์„œ
์ž๋ฃŒ๊ตฌ์กฐ 05 ์ตœ์ข… ๋ณด๊ณ ์„œpkok15
ย 
2012 Ds A1 05
2012 Ds A1 052012 Ds A1 05
2012 Ds A1 05seonhyung
ย 
์ด์‚ฐ์น˜4๋ณด๊ณ ์„œ
์ด์‚ฐ์น˜4๋ณด๊ณ ์„œ์ด์‚ฐ์น˜4๋ณด๊ณ ์„œ
์ด์‚ฐ์น˜4๋ณด๊ณ ์„œKimChangHoen
ย 
Mst ๊ตฌํ•˜๊ธฐ
Mst ๊ตฌํ•˜๊ธฐMst ๊ตฌํ•˜๊ธฐ
Mst ๊ตฌํ•˜๊ธฐherojoon1378
ย 
์ด์‚ฐ์น˜์ˆ˜ํ•™ Project5
์ด์‚ฐ์น˜์ˆ˜ํ•™ Project5์ด์‚ฐ์น˜์ˆ˜ํ•™ Project5
์ด์‚ฐ์น˜์ˆ˜ํ•™ Project5KoChungWook
ย 
Project#2๋ง์˜์—ฌํ–‰ Hwp
Project#2๋ง์˜์—ฌํ–‰ HwpProject#2๋ง์˜์—ฌํ–‰ Hwp
Project#2๋ง์˜์—ฌํ–‰ HwpKimjeongmoo
ย 
Prefix_sum.pdf
Prefix_sum.pdfPrefix_sum.pdf
Prefix_sum.pdfHo Jeong Im
ย 
[SOPT] ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ ๋ฐ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์Šคํ„ฐ๋”” - #05 : AVL ํŠธ๋ฆฌ
[SOPT] ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ ๋ฐ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์Šคํ„ฐ๋”” - #05 : AVL ํŠธ๋ฆฌ[SOPT] ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ ๋ฐ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์Šคํ„ฐ๋”” - #05 : AVL ํŠธ๋ฆฌ
[SOPT] ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ ๋ฐ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์Šคํ„ฐ๋”” - #05 : AVL ํŠธ๋ฆฌS.O.P.T - Shout Our Passion Together
ย 
2012 Dm B3 ๋ณด๊ณ ์„œ(10๋ฐฑ์ง€์›)
2012 Dm B3 ๋ณด๊ณ ์„œ(10๋ฐฑ์ง€์›)2012 Dm B3 ๋ณด๊ณ ์„œ(10๋ฐฑ์ง€์›)
2012 Dm B3 ๋ณด๊ณ ์„œ(10๋ฐฑ์ง€์›)arong1234
ย 

ร„hnlich wie 2012 Ds 04 (20)

DS_04
DS_04DS_04
DS_04
ย 
์ž๋ฃŒ๊ตฌ์กฐ Project4
์ž๋ฃŒ๊ตฌ์กฐ Project4์ž๋ฃŒ๊ตฌ์กฐ Project4
์ž๋ฃŒ๊ตฌ์กฐ Project4
ย 
์ž๋ฃŒ๊ตฌ์กฐ04
์ž๋ฃŒ๊ตฌ์กฐ04์ž๋ฃŒ๊ตฌ์กฐ04
์ž๋ฃŒ๊ตฌ์กฐ04
ย 
์ž๊ตฌ4๋ฒˆ
์ž๊ตฌ4๋ฒˆ์ž๊ตฌ4๋ฒˆ
์ž๊ตฌ4๋ฒˆ
ย 
[SOPT] ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ ๋ฐ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์Šคํ„ฐ๋”” - #04 : ํŠธ๋ฆฌ ๊ธฐ์ดˆ, ์ด์ง„ ํŠธ๋ฆฌ, ์šฐ์„ ์ˆœ์œ„ ํ
[SOPT] ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ ๋ฐ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์Šคํ„ฐ๋”” - #04 : ํŠธ๋ฆฌ ๊ธฐ์ดˆ, ์ด์ง„ ํŠธ๋ฆฌ, ์šฐ์„ ์ˆœ์œ„ ํ[SOPT] ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ ๋ฐ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์Šคํ„ฐ๋”” - #04 : ํŠธ๋ฆฌ ๊ธฐ์ดˆ, ์ด์ง„ ํŠธ๋ฆฌ, ์šฐ์„ ์ˆœ์œ„ ํ
[SOPT] ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ ๋ฐ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์Šคํ„ฐ๋”” - #04 : ํŠธ๋ฆฌ ๊ธฐ์ดˆ, ์ด์ง„ ํŠธ๋ฆฌ, ์šฐ์„ ์ˆœ์œ„ ํ
ย 
CS Study - Data Structure ์ž๋ฃŒ ๊ตฌ์กฐ. Tree ๋ฐœํ‘œ์ž๋ฃŒ
CS Study - Data Structure ์ž๋ฃŒ ๊ตฌ์กฐ. Tree ๋ฐœํ‘œ์ž๋ฃŒCS Study - Data Structure ์ž๋ฃŒ ๊ตฌ์กฐ. Tree ๋ฐœํ‘œ์ž๋ฃŒ
CS Study - Data Structure ์ž๋ฃŒ ๊ตฌ์กฐ. Tree ๋ฐœํ‘œ์ž๋ฃŒ
ย 
Project#4 Syntax Of Languages Hwp
Project#4 Syntax Of Languages HwpProject#4 Syntax Of Languages Hwp
Project#4 Syntax Of Languages Hwp
ย 
[Swift] Data Structure - Binary Tree
[Swift] Data Structure - Binary Tree[Swift] Data Structure - Binary Tree
[Swift] Data Structure - Binary Tree
ย 
์ด์‚ฐ์น˜์ˆ˜ํ•™ Project4
์ด์‚ฐ์น˜์ˆ˜ํ•™ Project4์ด์‚ฐ์น˜์ˆ˜ํ•™ Project4
์ด์‚ฐ์น˜์ˆ˜ํ•™ Project4
ย 
์ž๋ฃŒ๊ตฌ์กฐ ๊ทธ๋ž˜ํ”„ ๋ณด๊ณ ์„œ
์ž๋ฃŒ๊ตฌ์กฐ ๊ทธ๋ž˜ํ”„ ๋ณด๊ณ ์„œ์ž๋ฃŒ๊ตฌ์กฐ ๊ทธ๋ž˜ํ”„ ๋ณด๊ณ ์„œ
์ž๋ฃŒ๊ตฌ์กฐ ๊ทธ๋ž˜ํ”„ ๋ณด๊ณ ์„œ
ย 
Data Structure 2
Data Structure 2Data Structure 2
Data Structure 2
ย 
์ž๋ฃŒ๊ตฌ์กฐ 05 ์ตœ์ข… ๋ณด๊ณ ์„œ
์ž๋ฃŒ๊ตฌ์กฐ 05 ์ตœ์ข… ๋ณด๊ณ ์„œ์ž๋ฃŒ๊ตฌ์กฐ 05 ์ตœ์ข… ๋ณด๊ณ ์„œ
์ž๋ฃŒ๊ตฌ์กฐ 05 ์ตœ์ข… ๋ณด๊ณ ์„œ
ย 
2012 Ds A1 05
2012 Ds A1 052012 Ds A1 05
2012 Ds A1 05
ย 
์ด์‚ฐ์น˜4๋ณด๊ณ ์„œ
์ด์‚ฐ์น˜4๋ณด๊ณ ์„œ์ด์‚ฐ์น˜4๋ณด๊ณ ์„œ
์ด์‚ฐ์น˜4๋ณด๊ณ ์„œ
ย 
Mst ๊ตฌํ•˜๊ธฐ
Mst ๊ตฌํ•˜๊ธฐMst ๊ตฌํ•˜๊ธฐ
Mst ๊ตฌํ•˜๊ธฐ
ย 
์ด์‚ฐ์น˜์ˆ˜ํ•™ Project5
์ด์‚ฐ์น˜์ˆ˜ํ•™ Project5์ด์‚ฐ์น˜์ˆ˜ํ•™ Project5
์ด์‚ฐ์น˜์ˆ˜ํ•™ Project5
ย 
Project#2๋ง์˜์—ฌํ–‰ Hwp
Project#2๋ง์˜์—ฌํ–‰ HwpProject#2๋ง์˜์—ฌํ–‰ Hwp
Project#2๋ง์˜์—ฌํ–‰ Hwp
ย 
Prefix_sum.pdf
Prefix_sum.pdfPrefix_sum.pdf
Prefix_sum.pdf
ย 
[SOPT] ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ ๋ฐ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์Šคํ„ฐ๋”” - #05 : AVL ํŠธ๋ฆฌ
[SOPT] ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ ๋ฐ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์Šคํ„ฐ๋”” - #05 : AVL ํŠธ๋ฆฌ[SOPT] ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ ๋ฐ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์Šคํ„ฐ๋”” - #05 : AVL ํŠธ๋ฆฌ
[SOPT] ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ ๋ฐ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์Šคํ„ฐ๋”” - #05 : AVL ํŠธ๋ฆฌ
ย 
2012 Dm B3 ๋ณด๊ณ ์„œ(10๋ฐฑ์ง€์›)
2012 Dm B3 ๋ณด๊ณ ์„œ(10๋ฐฑ์ง€์›)2012 Dm B3 ๋ณด๊ณ ์„œ(10๋ฐฑ์ง€์›)
2012 Dm B3 ๋ณด๊ณ ์„œ(10๋ฐฑ์ง€์›)
ย 

2012 Ds 04

  • 1. C3์กฐ ๊ณผ์ œ๋ฌผ ๋ฐœํ‘œ ์กฐ์žฅ : 09๋ฐ•๊ตฌ๋‚จ ์กฐ์› : 07์ด์šฉ์žฌ 09๊น€ํ˜„ํ˜ธ 09์†กํ•˜์œค 11์ •์˜ˆ๋ฆฐ - 1 -
  • 2. ๊ณผ์ œ์ˆ˜ํ–‰์ผ์ง€ ์กฐ์›์†Œ๊ฐœ ์กฐ์žฅ ๋ฐ•๊ตฌ๋‚จ ์†Œ ์† C3 ์กฐ ์ž๋ฃŒ์กฐ์‚ฌ ์†กํ•˜์œค, ๊น€ํ˜„ํ˜ธ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์ด์šฉ์žฌ, ์ •์˜ˆ๋ฆฐ ์ฃผ ์ œ ์—ฐ๊ตฌ์ œ๋ชฉ ์ƒํ˜ธ ์ฐธ์กฐ ์ƒ์„ฑ๊ธฐ ํŠธ๋ฆฌ๋ฅผ ์ด์šฉํ•˜์—ฌ ํ•˜๋‚˜ ์ด์ƒ์˜ ๋ฌธ์žฅ์„ ์ž…๋ ฅ ํ•˜์˜€์„๋•Œ ๋‹จ์–ด๋“ค์˜ ๊ฐœ์ˆ˜,Line๋ฅผ ๋‚˜ํƒ€๋‚ผ ์ˆ˜ ์žˆ ์—ฐ๊ตฌ๋ฐฐ๊ฒฝ ์œผ๋ฉฐ ์ด๊ฒƒ์„ ์‘์šฉ ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ฐธ ๊ณ  ์ž ๋ฃŒ ๊ณผ์ œ์˜ ์ˆ˜ํ–‰ ์ฒซ์งธ๋‚  2012 ๋…„ 5 ์›” 8 ์ผ ํ™”์š”์ผ ํšŒ์˜ ์ฃผ์ œ ์กฐ์› ์ž๊ธฐ์†Œ๊ฐœ ๋ฐ ์—ญํ• ๋ถ„๋‹ด, ๊ณผ์ œ ํŒŒ์•… ์กฐ์žฅ : ๋ฐ•๊ตฌ๋‚จ ์ž๋ฃŒ์กฐ์‚ฌ : ๊น€ํ˜„ํ˜ธ, ์†กํ•˜์œค ํ”„๋กœ๊ทธ๋ž˜๋ฐ : ์ด์šฉ์žฌ, ์ •์˜ˆ๋ฆฐ ์ด์ƒ๊ณผ ๊ฐ™์ด ์ด๋ฒˆ ํ”„๋กœ์ ํŠธ์˜ ์—ญํ• ๋ถ„๋‹ด์„ ์‹ค์‹œํ–ˆ์Šต๋‹ˆ๋‹ค. ์ฒซ ์ˆ˜์—…์‹œ๊ฐ„์— ๋ฌธ์ œ ํŒŒ์•…์„ ์œ„ํ•ด ํ† ์˜๋ฅผ ์ง„ํ–‰ ํ•˜๋ฉด์„œ ๊ฐ์ž ์—ญํ•  ๋ถ„๋‹ด์„ ํ•˜์˜€์Šต๋‹ˆ๋‹ค. ํŠธ๋ฆฌ(Tree) ํŠธ๋ฆฌ ํšŒ๋กœ. ๋‚˜๋ฌด๊ฐ€ ํ•˜๋‚˜์˜ ๋ฟŒ๋ฆฌ(Root)์—์„œ ์ค„๊ธฐ๊ฐ€ ๋‚˜์™€ ๊ฐ€์ง€๋กœ ๋‚˜๋ˆ„์–ด์ง€๋Š” ๊ฒƒ์ฒ˜๋Ÿผ, ์–ด๋–ค ํšŒ์˜ ๋‚ด์šฉ ํ•˜๋‚˜์˜ ์ง‘ํ•ฉ์œผ๋กœ๋ถ€ํ„ฐ ํ•˜์œ„ ๋ ˆ๋ฒจ๋กœ ๊ฐ€์ง€๊ฐ€ ๋‚˜์˜ค๋Š” ์ง‘ํ•ฉ ๊ด€๊ณ„๋ฅผ ๊ฐ–๋Š” ๊ณ„์ธต ๊ตฌ์กฐ๋ฅผ ๋งํ•œ๋‹ค. ๋ถ€๋ถ„์ ์œผ๋กœ๋„ ๊ฒฐ์ฝ” ๋ฃจํŠธ๋ฅผ ํ˜•์„ฑํ•˜๋Š” ๊ฒฝ์šฐ๋Š” ์—†๋‹ค. ๋”ฐ๋ผ์„œ ์ฒ˜์Œ์— ๊ฐ€์ง€๊ฐ€ ๋‚˜์˜ค๊ธฐ ์‹œ์ž‘๋˜ ๊ณ  ์žˆ๋Š” ์ง‘ํ•ฉ์œผ๋กœ๋ถ€ํ„ฐ ์ฐจ๋ก€๋Œ€๋กœ ใ€Œ๊ฐ€์ง€ใ€๋ฅผ ๋”๋“ฌ์–ด๊ฐ€๋ฉด ๋ชฉ์ ์˜ ์ง‘ํ•ฉ์„ ์ฐพ์„ ์ˆ˜ ์žˆ๋‹ค. ์ • ๋ณด ์ฒ˜๋ฆฌ ๋ถ„์•ผ์—๋Š” ์ด ๊ฐ™์€ ํŠธ๋ฆฌ ๊ตฌ์กฐ๋ฅผ ๊ฐ€์ง„ ๊ฐœ๋…์ด ๋งŽ์ด ์žˆ๋‹ค. ํŠธ๋ฆฌ์˜ ์กฐ๊ฑด 1) ํŠธ๋ฆฌ์˜ ๋…ธ๋“œ ์ค‘ 1๊ฐœ์˜ Root Node๊ฐ€ ์žˆ์–ด์•ผ ํ•œ๋‹ค. 2) Root Node๋ฅผ ์ œ์™ธํ•œ ๋…ธ๋“œ๋“ค์„ n๊ฐœ (n>=0)์˜ ๋ถ€๋ถ„์ง‘ํ•ฉ์œผ๋กœ ๋‚˜๋ˆ„์–ด์ง€๋ฉฐ, ๊ฐ ๋ถ€๋ถ„์ง‘ํ•ฉ ์€ ํ•˜๋‚˜์˜ ํŠธ๋ฆฌ์ด๋‹ค. ์ด๋•Œ ๊ฐ ๋ถ€๋ถ„์ง‘ํ•ฉ์„ subtree๋ผ๊ณ  ํ•œ๋‹ค.
  • 3. ํŠธ๋ฆฌ์˜ ์šฉ์–ด. Node ํŠธ๋ฆฌ๋ฅผ ํ‘œํ˜„ํ•˜๋Š” ๊ตฌ์„ฑ์š”์†Œ. Root Node ํŠธ๋ฆฌ์—์„œ ์ตœ์ƒ์œ„ ๋ ˆ๋ฒจ์— ์žˆ๋Š” ๋…ธ๋“œ(ํŠธ๋ฆฌ์˜ ์ฒ˜์Œ ๋…ธ๋“œ). Degree of Node ๋…ธ๋“œ์—์„œ children Node์˜ ์ˆ˜. Degree of a Tree ํŠธ๋ฆฌ๋ฅผ ํ˜•์„ฑํ•˜๋Š” ๋ชจ๋“  ๋…ธ๋“œ์˜ ์ฐจ์ˆ˜์—์„œ ์ตœ๋Œ€๊ฐ’. Sub tree ํŠธ๋ฆฌ์—์„œ Root Node๋ฅผ ์ œ์™ธํ•œ ๋ชจ๋“  ํŠธ๋ฆฌ. Ancestor Node Root Node์—์„œ ์ž„์˜์˜ ๋…ธ๋“œ ๊นŒ์ง€์˜ ๊ฒฝ๋กœ๋ฅผ ํ˜•์„ฑํ•˜๋Š” ๋…ธ๋“œ. Descendent Node ํŠธ๋ฆฌ์—์„œ ์ž„์˜์˜ ํ•˜์œ„๋…ธ๋“œ์— ์—ฐ๊ฒฐ๋œ ๋ชจ๋“  ๋…ธ๋“œ. Parent Node ์ž„์˜์˜ ๋…ธ๋“œ์— ์—ฐ๊ฒฐ๋œ ๋ฐ”๋กœ ์œ„์˜ ๋…ธ๋“œ. Children Node ์ž„์˜์— ๋…ธ๋“œ์— ์—ฐ๊ฒฐ๋œ ๋ฐ”๋กœ ์•„๋ž˜์˜ ๋…ธ๋“œ. sibling ๋™์ผํ•œ Parent Node๋ฅผ ๊ฐ€์ง€๋Š” ๋…ธ๋“œ. Branch Node Root Node์™€ Leaf Node๋ฅผ ์ œ์™ธํ•œ ๋ชจ๋“  ๋…ธ๋“œ. Leaf Node ๋…ธ๋“œ์˜ ์ฐจ์ˆ˜๊ฐ€ 0์ธ ๋…ธ๋“œ(ํŠธ๋ฆฌ์˜ ๋งˆ์ง€๋ง‰๋…ธ๋“œ). Level ํŠธ๋ฆฌ์—์„œ Root Node๋ถ€ํ„ฐ ํ•œ๋‹จ๊ณ„์”ฉ ๋‚ด๋ ค๊ฐ€๋ฉด์„œ 1์”ฉ ์ฆ๊ฐ€ํ•œ๋‹ค. Height(Depth) ํŠธ๋ฆฌ์˜ ์ตœ๋Œ€ ๋ ˆ๋ฒจ. Path ์–ด๋–ค ์ž„์˜์˜ ๋…ธ๋“œ๋กœ๋ถ€ํ„ฐ ์ž„์˜์˜ ๋…ธ๋“œ์— ์ด๋ฅด๋Š” ๋™์•ˆ์— ์—ฐ๊ฒฐ๋œ ์ผ๋ จ์˜ ๋…ธ๋“œ์˜ ์ง‘ํ•ฉ. ๊ฒฝ ๋กœ์˜ ๊ธธ์ด๋Š” ๊ฒฝ๋กœ๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ๋…ธ๋“œ์˜ ์ˆ˜๋ณด๋‹ค 1์ด ์ž‘๋‹ค. ํŠธ๋ฆฌ์˜ ํ‘œํ˜„๋ฐฉ๋ฒ•. ํŠธ๋ฆฌ์˜ ํ‘œํ˜„๋ฐฉ๋ฒ•์œผ๋กœ๋Š” ๋ฆฌ์ŠคํŠธ, ์ง‘ํ•ฉ, ๋ง‰๋Œ€ ๊ทธ๋ž˜ํ”„, ๋ฐฐ์—ด, ์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ ๋“ฑ์ด ์žˆ๋‹ค. ํŠธ๋ฆฌ์˜ ๋ถ„๋ฅ˜ ๋ฐฉ๋ฒ•. - 2 -
  • 4. ํŠธ๋ฆฌ๋Š” ๊ทธ๋ž˜ํ”„์˜ ์ผ์ข…์œผ๋กœ์„œ Direct Tree ์™€ Undirect Tree, General Tree์™€ Binary Tree ๋“ฑ์œผ๋กœ ๊ตฌ๋ถ„๋œ๋‹ค. General Tree. 1)Ordered Tree & Oriented Tree ํŠธ๋ฆฌ์—์„œ ๋ ˆ๋ฒจ์˜ ๊ฐ™์€ ๋…ธ๋“œ๋“ค์˜ ์ˆœ์„œ๊ฐ€ ์ค‘์š”ํ•œ ๊ฒฝ์šฐ๋ฅผ Ordered Tree๋ผ๊ณ  ํ•˜๊ณ , ๋…ธ๋“œ์˜ ์ˆœ์„œ๊ฐ€ ์ค‘์š”ํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ์—๋Š” Oriented Tree๋ผ๊ณ  ํ•œ๋‹ค. 2)Similar Tree & Equivalent Tree ์ž„์˜์˜ ํŠธ๋ฆฌ๊ฐ€ 2๊ฐœ ์ฃผ์–ด์กŒ์„๋•Œ ํŠธ๋ฆฌ๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ์ „์ฒด ๋…ธ๋“œ์˜ ์ˆ˜์™€ ์ขŒ์šฐ ๋ฐฐ์—ด ์œ„์น˜๋“ฑ๊ณผ ๊ฐ™์€ ์™ธํ˜•์ ์ธ ๋ถ€๋ถ„์ด ๊ฐ™์„ ๊ฒฝ์šฐ Similar Tree ๋ผ๊ณ  ํ•˜๊ณ , ๋…ธ๋“œ์˜ ๋‚ด์šฉ๊นŒ์ง€ ๊ฐ™์€ ๊ฒฝ์šฐ Equivalent Tree๋ผ๊ณ  ํ•œ๋‹ค. Binary Tree ์ผ๋ฐ˜ํŠธ๋ฆฌ์™€๋Š” ๋‹ค๋ฅด๊ฒŒ ์ค‘์š”ํ•œ ํ˜•ํƒœ์˜ ์ž๋ฃŒ ๊ฐ์ฒด๋กœ ์ฐจ์ˆ˜๊ฐ€ 2์ดํ•˜์ธ ํŠธ๋ฆฌ์ด๋‹ค. ์ฆ‰, ์ผ๋ฐ˜ํŠธ ๋ฆฌ์—์„œ๋Š” ๋…ธ๋“œ์˜ ๊ณต๋ฐฑ์ด ์กด์žฌํ•  ์ˆ˜ ์—†์ง€๋งŒ, Binary Tree์—์„œ๋Š” ์กด์žฌ ๊ฐ€๋Šฅํ•˜๋ฉฐ, ์™ผ์ชฝ๊ณผ ์˜ค๋ฅธ์ชฝ SubTree๊ฐ€ ๋…๋ฆฝ์ ์ด๋‹ค. 1) Full Binary Tree Depth๊ฐ€ i์ธ Binary Tree์—์„œ ์—ฐ๊ฒฐ๋  ์ˆ˜ ์žˆ๋Š” ์ตœ๋Œ€์˜ ๋…ธ๋“œ๊ฐ€ ์—ฐ๊ฒฐ๋˜์–ด์ง„ ํŠธ๋ฆฌ๋ฅผ ๋งํ•˜ ๋ฉฐ ๋…ธ๋“œ์˜ ์ˆ˜๋Š” 2i-1๊ฐœ์ด๋‹ค. 2) Complete Binary Tree level์ด i์ธ ๋…ธ๋“œ์˜ ์ˆ˜๋ฅผ n์ด๋ผ ํ•  ๋•Œ 2^i-1 -1<n<2^i -1์„ ๋งŒ์กฑํ•˜๋Š” ํŠธ๋ฆฌ. 3)Knuth Binary Tree ๊ฐ ๋…ธ๋“œ์˜ ์ฐจ์ˆ˜๊ฐ€ 2์ดํ•˜์ธ ํŠธ๋ฆฌ. 4)์‚ฌํ–ฅ์ด์ง„ํŠธ๋ฆฌ Root Node๋ฅผ ์ค‘์‹ฌ์œผ๋กœ ์™ผ์ชฝ์ด๋‚˜ ์˜ค๋ฅธ์ชฝ ํ•œ ๋ฐฉํ–ฅ์œผ๋กœ ๊ธฐ์šธ์–ด์ง„ ํŠธ๋ฆฌ. zz ์กฐ์›๋“ค ๋ชจ๋‘ ๊ธฐ๋ณธ์ ์ธ ํŠธ๋ฆฌ์˜ ํ˜•ํƒœ๋งŒ ์•Œ๊ณ  ์žˆ์—ˆ์œผ๋ฉฐ, ํŠธ๋ฆฌ์˜ ์ข…๋ฅ˜,ํ‘œํ˜„๋ฐฉ๋ฒ•,ํ”„๋กœ๊ทธ๋ž˜๋ฐ์— ๋ฐ˜์„ฑ ์‘์šฉ ํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋ชจ๋‘ ์•Œ์ง€ ๋ชปํ•˜์—ฌ ์ž๋ฃŒ์กฐ์‚ฌ๋ฅผ ํ•˜๋ฉฐ ์•Œ์•„๋ณด๊ธฐ๋กœ ํ† ์˜ ํ•˜์˜€์Šต๋‹ˆ๋‹ค. ๋‘˜์งธ๋‚  2012 ๋…„ 5 ์›” 10 ์ผ ๋ชฉ์š”์ผ ํšŒ์˜์ฃผ์ œ AVLํŠธ๋ฆฌ์˜ ๊ท ํ˜•๋ฐฉ๋ฒ• ๋ฐ ์ •์˜ ์„œ๋กœ๊ฐ€ ์กฐ์‚ฌํ•ด์˜จ ๋‚ด์šฉ์„ ๋ฐ”ํƒ•์œผ๋กœ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๋งŒ๋“ค๊ธฐ์— ์•ž์„œ ๊ท ํ˜•ํŠธ๋ฆฌ์— ๊ด€ํ•˜์—ฌ ๊ต์ˆ˜๋‹˜ ๊ป˜ โ€ป AVL ํŠธ๋ฆฌ AVL ํŠธ๋ฆฌ๋Š” Adelson-Velskii์™€ Landis์— ์˜ํ•ด 1962๋…„์— ์ œ์•ˆ๋œ ํŠธ๋ฆฌ๋กœ์จ ๊ฐ ๋…ธ๋“ค์— ์™ผ ์ชฝ ์„œ๋ธŒ ํŠธ๋ฆฌ์˜ ๋†’์ด์™€ ์˜ค๋ฅธ์ชฝ ์„œ๋ธŒํŠธ๋ฆฌ์˜ ๋†’์ด ์ฐจ์ž‰๊ฐ€ 1 ์ดํ•˜์ธ ์ด์ง„ ํƒ์ƒ‰ ํŠธ๋ฆฌ๋ฅผ ๋งํ•œ ๋‹ค. AVLํŠธ๋ฆฌ๋Š” ํŠธ๋ฆฌ๊ฐ€ ๋น„๊ท ํ˜• ์ƒํƒœ๋กœ ๋˜๋ฉด ์Šค์Šค๋กœ ๋…ธ๋“œ๋“ค์„ ์žฌ๋ฐฐ์น˜ํ•˜์—ฌ ๊ท ํ˜• ์ƒํƒœ๋กœ ๋งŒ ํšŒ์˜๋‚ด์šฉ ๋“ ๋‹ค. ๋”ฐ๋ผ์„œ AVL ํŠธ๋ฆฌ๋Š” ๊ท ํ˜• ํŠธ๋ฆฌ๊ฐ€ ํ•ญ์ƒ ๋ณด์žฅ๋˜๊ธฐ ๋•Œ๋ฌธ์— ํƒ์ƒ‰์‹œ๊ฐ„์ด O(logn) ์‹œ๊ฐ„ ์•ˆ์— ๋๋‚˜๊ฒŒ ๋œ๋‹ค. ๋˜ํ•œ ์‚ฝ์ž…๊ณผ ์‚ญ์ œ ์—ฐ์‚ฐ๋„ O(logn) ์‹œ๊ฐ„ ์•ˆ์— ํ•  ์ˆ˜ ์žˆ๋‹ค. ํ•˜์ง€๋งŒ ๋ ˆ๋“œ -๋ธ”๋ž™ ํŠธ๋ฆฌ๋ณด๋‹ค ํšจ์œจ์ด ๋–จ์–ด์ง€๊ธฐ ๋•Œ๋ฌธ์— ์ž์ฃผ ์‚ฌ์šฉ๋˜์ง€๋Š” ์•Š๋Š”๋‹ค. ย AVL ํŠธ๋ฆฌ์—์„œ ๊ท ํ˜• ์ธ์ˆ˜๋Š” ๋งค์šฐ ์ค‘์š”ํ•˜๋‹ค. ๊ท ํ˜• ์ธ์ˆ˜(Balancing Factor)๋ž€ [์™ผ์ชฝ ์„œ๋ธŒ ํŠธ๋ฆฌ์˜ ๋†’์ด - ์˜ค๋ฅธ์ชฝ ์„œ๋ธŒ ํŠธ๋ฆฌ์˜ ๋†’์ด]๋กœ ์ •์˜ ๋œ๋‹ค. ๋ชจ๋“  ๋…ธ๋“œ์˜ ๊ท ํ˜• ์ธ์ˆ˜๊ฐ€ ยฑ1 ์ด ํ•˜์ด๋ฉด AVL ํŠธ๋ฆฌ์ด๋‹ค. ์•„๋ž˜์˜ ์‚ฌ์ง„์€ ๋ชจ๋“  ๊ท ํ˜• ์ธ์ˆ˜๊ฐ€ ์ ์ ˆํ•˜๊ธฐ ๋•Œ๋ฌธ์— AVL ํŠธ๋ฆฌ๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค. - 3 -
  • 5. ย  โ€ป ์‚ฝ์ž… ์—ฐ์‚ฐ ์›์†Œ๋ฅผ ํ•˜๋‚˜ ์‚ฝ์ž…ํ•˜๊ฒŒ ๋œ๋‹ค๋ฉด ์ด์ง„ ํƒ์ƒ‰ ํŠธ๋ฆฌ์˜ ์‚ฝ์ž… ๊ทœ์น™์— ๋”ฐ๋ผ ์šฐ์„  ๋…ธ๋“œ๋ฅผ ์œ„์น˜์‹œํ‚จ ๋‹ค. ๊ทธ๋ฆฌ๊ณ ย ๋ชจ๋“  ๋…ธ๋“œ์— ๋Œ€ํ•œย ๊ท ํ˜•์ธ์ˆ˜๊ฐ€ ยฑ1 ๋‚ด์—ย ๊ฐ’์ด๋ฉด ๊ท ํ˜•์ด ์œ ์ง€๋œ ๊ฒƒ์ด๋ฏ€๋กœ ์‚ฝ์ž… ๊ณผ์ •์„ ๋งˆ์นœ๋‹ค. ํ•˜์ง€๋งŒย ๋ชจ๋“  ๋…ธ๋“œ ์ค‘ย ํ•œ ๋…ธ๋“œ์˜ย ๊ท ํ˜• ์ธ์ˆ˜๋งŒ์ด๋ผ๋„ ๊ทธ ๋ฒ”์œ„๋ฅผ ๋ฒ—์–ด๋‚˜๋ฉด ๊ท ํ˜•์„ ๋งž์ถฐ์ฃผ๊ธฐ ์œ„ํ•œ "ํšŒ์ „(Rotation)" ์ž‘์—…์„ ํ•ด์ฃผ์–ด์•ผ ํ•œ๋‹ค. AVL ํŠธ๋ฆฌ์—์„œ ๊ท ํ˜•์ด ๊นจ์ง€๋Š” ํƒ€์ž…์€ย 4๊ฐ€์ง€๊ฐ€ ์žˆ๋‹ค. ๊ฐ๊ฐ์˜ ํƒ€์ž…์„ ์‚ดํŽด๋ณด๋„๋ก ํ•˜์ž. ์ƒˆ ๋กœ ์ถ”๊ฐ€๋˜๋Š” ๋…ธ๋“œ๋ฅผ N, ๊ฐ€์žฅ ๊ฐ€๊นŒ์šฐ๋ฉด์„œ ๊ท ํ˜•์ธ์ˆ˜๊ฐ€ ยฑ2๊ฐ€ ๋œ ์กฐ์ƒ ๋…ธ๋“œ๋ฅผ A๋ผ๊ณ  ํ•˜์ž. - LL : N์ด A์˜ ์™ผ์ชฝ ์„œ๋ธŒํŠธ๋ฆฌ์˜ ์™ผ์ชฝ์— ์‚ฝ์ž…๋˜๋Š” ๊ฒฝ์šฐ - LR : N์ด A์˜ ์™ผ์ชฝ ์„œ๋ธŒํŠธ๋ฆฌ์˜ ์˜ค๋ฅธ์ชฝ์— ์‚ฝ์ž…๋˜๋Š” ๊ฒฝ์šฐ - RR : N์ด A์˜ย ์˜ค๋ฅธ์ชฝ ์„œ๋ธŒํŠธ๋ฆฌ์˜ ์˜ค๋ฅธ์ชฝ์— ์‚ฝ์ž…๋˜๋Š” ๊ฒฝ์šฐ - RL : N์ด A์˜ ์˜ค๋ฅธ์ชฝ ์„œ๋ธŒํŠธ๋ฆฌ์˜ ์™ผ์ชฝ์— ์‚ฝ์ž…๋˜๋Š” ๊ฒฝ์šฐ ย ย ย ย ย ย ย ย ย ย  [LL]ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย  ย ย ย ย ย ย ย ย [LR] ย  ์ด๋ ‡๊ฒŒ ๊ท ํ˜•์ด ๊นจ์ง€๋Š” ๊ฒฝ์šฐ์—์„œ ๊ท ํ˜• ํŠธ๋ฆฌ๋กœ ๋‹ค์‹œ ๋ณ€๊ฒฝํ•˜๊ธฐ ์œ„ํ•ด์„œ ์ˆ˜ํ–‰ํ•˜๋Š” ํšŒ์ „ ๋˜ํ•œ ๊ฐ๊ฐ ๋‹ค๋ฅด๋‹ค. - LL : A๋ถ€ํ„ฐ N๊นŒ์ง€์˜ ๊ฒฝ๋กœ ์ƒ์˜ ๋…ธ๋“œ๋“ค์„ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ํšŒ์ „์‹œํ‚จ๋‹ค.(๋‹จ์ˆœํšŒ์ „) - LR : A๋ถ€ํ„ฐ N๊นŒ์ง€์˜ ๊ฒฝ๋กœ ์ƒ์˜ ๋…ธ๋“œ๋“ค์„ ์™ผ์ชฝ-์˜ค๋ฅธ์ชฝ์œผ๋กœ ํšŒ์ „์‹œํ‚จ๋‹ค.(์ด์ค‘ํšŒ์ „) - RR : A๋ถ€ํ„ฐ N๊นŒ์ง€์˜ ๊ฒฝ๋กœ ์ƒ์˜ ๋…ธ๋“œ๋“ค์„ ์™ผ์ชฝ์œผ๋กœ ํšŒ์ „์‹œํ‚จ๋‹ค.(๋‹จ์ˆœํšŒ์ „) - RL : A๋ถ€ํ„ฐ N๊นŒ์ง€์˜ ๊ฒฝ๋กœ ์ƒ์˜ ๋…ธ๋“œ๋“ค์„ ์˜ค๋ฅธ์ชฝ-์™ผ์ชฝ์œผ๋กœ ํšŒ์ „์‹œํ‚จ๋‹ค.(์ด์ค‘ํšŒ์ „) LL๊ณผ RR ํšŒ์ „, LR๊ณผ RL ํšŒ์ „์ด ๊ฐ๊ฐ ๋Œ€์นญ์ ์œผ๋กœ ๋™์ž‘ํ•˜๊ฒŒ ๋œ๋‹ค. ย  LL ๋ถ€ํ„ฐ ์„ค๋ช…ํ•˜์ž๋ฉด, ์ผ๋‹จ ๋ฐ”๋กœ ์œ„ ๊ทธ๋ฆผ์„ ๋ณด์ž. ์„ธ๊ฐœ์˜ ์›์†Œ๋ฅผ ์ •ํ™•ํ•˜๊ฒŒ ์žฌ๋ฐฐ์น˜ํ•˜๊ธฐ ์œ„ ํ•ด์„  ์„ธ๊ฐœ ์ค‘ ์ค‘๊ฐ„๊ฐ’์„ ๋ถ€๋ชจ์— ์œ„์น˜์‹œํ‚ค๊ณ  ๋‚˜๋จธ์ง€๋ฅผ ๊ฐ๊ฐ ์™ผ์ชฝ, ์˜ค๋ฅธ์ชฝ ์ž์‹์œผ๋กœ ์‚ผ์œผ๋ฉด ๋  ๊ฒƒ์ด๋‹ค. ๋”ฐ๋ผ์„œ A๊ฐ€ ๋ถ€๋ชจ๊ฐ€ ๋˜๊ณ  B๋Š” A์˜ ์™ผ์ชฝ ์ž์‹ ๋…ธ๋“œ ์œ„์น˜๋ฅผ ๊ณ ์ˆ˜ํ•˜๋ฉฐ, C๋Š” A์˜ - 4 -
  • 6. ์˜ค๋ฅธ์ชฝ ์ž์‹ ๋…ธ๋“œ๊ฐ€ ๋œ๋‹ค. A์˜ ์˜ค๋ฅธ์ชฝ ์ž์‹ ๋…ธ๋“œ๋Š” C์˜ ์™ผ์ชฝ ์ž์‹ ๋…ธ๋“œ๊ฐ€ ๋œ๋‹ค. ๋‹ค์Œ์œผ๋กœ LR ์„ ๋ณด์ž. ๋จผ์ € A๊ฐ€ B์˜ ์ž๋ฆฌ์— ์œ„์น˜ํ•˜๊ณ  B๋Š” A์˜ ์™ผ์ชฝ ์ž์‹ ๋…ธ๋“œ๊ฐ€ ๋œ๋‹ค. A์˜ ๊ธฐ์กด ์™ผ์ชฝ ์ž์‹ ๋…ธ๋“œ๋Š” B์˜ ์˜ค๋ฅธ์ชฝ ์ž์‹ ๋…ธ๋“œ๊ฐ€ ๋œ๋‹ค. ์ด๋ ‡๊ฒŒ ์ฒซ๋ฒˆ์งธ ํšŒ์ „์ด ์™„๋ฃŒ๋˜ ๊ณ  ๋‘๋ฒˆ์งธ ํšŒ์ „์€ LL๊ณผ ๋™์ผํ•˜๋‹ค. ํšŒ์ „์— ๋Œ€ํ•œ ์Šต๋“์€ ๊ธ€๋กœ๋งŒ ์ฝ์–ด์„œ๋Š” ์ ˆ๋Œ€ ์ตํž ์ˆ˜ ์—†์œผ๋‹ˆ, ๋‹ค๋ฅธ ์ฑ…์„ ๋ณด๋ฉด์„œ ์‹ค์ œ๋กœ ์ˆ˜ ํ–‰ํ•˜๋ณด๊ธธ ๋ฐ”๋ž€๋‹ค. ์œ„ ๊ทธ๋ฆผ์˜ ๊ฒฝ์šฐ๋ณด๋‹ค ๋ณต์žกํ•œ ๊ฒฝ์šฐ(๊ท ํ˜• ์ธ์ˆ˜๊ฐ€ 4์ธ ๊ฒฝ์šฐ๋„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค) ๋„ ๋งŽ์œผ๋‹ˆ ์—ฐ์Šต์ด ํ•„์ˆ˜์ ์ด๋‹ค. ย  ย  [์ถœ์ฒ˜] ๊ท ํ˜• ์ด์ง„ ํƒ์ƒ‰ ํŠธ๋ฆฌ - AVL ํŠธ๋ฆฌ, ๋ ˆ๋“œ-๋ธ”๋ž™ ํŠธ๋ฆฌ| -๊ท ํ˜•ํŠธ๋ฆฌ(AVL)์— ๊ด€ํ•˜์—ฌ ๋‚ด์šฉ์„ ์ดํ•ด ํ•  ์ˆ˜ ์žˆ์—ˆ์œผ๋‚˜ ์ด๊ฒƒ์„ ์ฝ”๋”ฉ์— ์ ์šฉ ํ•˜๋Š”๊ฒƒ์ด ๋ฌธ์ œ์  ์‰ฝ์ง€์•Š์•˜์Œ. ์…‹์งธ๋‚  2012 ๋…„ 5 ์›” 15 ์ผ ํ™”์š”์ผ ํšŒ์˜์ฃผ์ œ ํ”„๋กœ๊ทธ๋žจ ์ดˆ์•ˆ ๋ถ„์„ #include <stdio.h> #include <stdlib.h> #include <conio.h> #include <windows.h> #include <string.h> struct Node { char name; Node *link[26]; int page[26]; int count; int spot; }; Node addtree (Node *A, Node *B); Node AddNode (char A); Node Delnode (Node *A, char B); int search (Node *A, char B); int searchspot (Node *A, char B); void Printans (Node *A, char ans[], int x); int main () { int i,j,x,z; int check=0; FILE *point; char a = 'R'; int m=0; ํ”„๋กœ๊ทธ๋žจ ์ดˆ์•ˆ // printf("์ง„ํ–‰์ค‘"); Node *tree = (Node *)malloc(sizeof(Node)); // printf("์ง„ํ–‰์ค‘"); point=fopen("C://file.txt","r"); if(point==NULL) { return 1; } i = 0; j = 1; z = 0; tree[i] = AddNode(a); while(1) //ํ…์ŠคํŠธ ํŒŒ์ผ์— ์ €์žฅ๋˜์–ด ์žˆ๋Š” ๋ฌธ์žฅ๋“ค์„ ๋ฐฐ์—ด์— ๋„ฃ์–ด์„œ ์ €์žฅ. { a=fgetc(point); if(a>=65 && a<=90) { a+=32; } if(a>=97 && a<=122) // ์•ŒํŒŒ๋ฒณ์ด๋ฉด ๋…ธ๋“œ ์ง„ํ–‰ {printf("%c",a); check = search(&tree[i],a); // ๋…ธ๋“œ ์žˆ๋Š”์ง€ ํ™•์ธ if (check == 0 ) { // ๋…ธ๋“œ๊ฐ€ ์—†์œผ๋ฉด ๋…ธ๋“œ ์ถ”๊ฐ€ ํ•˜๊ณ  ์•„๋ž˜ ๋…ธ๋“œ๋กœ ์ด๋™. - 5 -
  • 7. tree[j] = AddNode(a); tree[j].spot = j; tree[i] = addtree(&tree[i],&tree[j]); i = j; j++; } else { i = searchspot(&tree[i],a); } // ๋…ธ๋“œ๊ฐ€ ์žˆ์œผ๋ฉด ๊ทธ๋Œ€๋กœ ์œ„์น˜๋งŒ ์ด๋™. } else if(a==' ' || a=='n') { // ๊ณต๋ฐฑ์ด๋‚˜ n ์ผ์‹œ, ์นด์šดํ„ฐ ์ฆ๊ฐ€. ๊ทธ๋ฆฌ๊ณ  root๋กœ ๋ณต๊ท€. tree[i].count++; tree[i].page[z]=1; i = 0; } else if(a=='+') { z++; } else if(a==EOF) {break; // ์•„๋ฌด ๊ฒƒ๋„ ์—†์„ ์‹œ ์ข…๋ฃŒ } } fclose(point); char ANS[50] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}; printf("nWord Count Linesn"); Printans(&tree[0],ANS,0); // ์ถœ๋ ฅ system("PAUSE"); getch(); return 0; } Node addtree (Node *A, Node *B) { for (int i = 0; i < 26 ; i++) { if (A->link[i] == NULL) { A -> link[i] = B; printf("%c์˜ LINK%d์— %c๋ฅผ ์‚ฝ์ž… n",A -> name,i,B -> name); break; } } return *A; } Node AddNode (char A) { Node *B = (Node *)malloc(sizeof(Node)); B->name = A; for (int i = 0; i < 26 ; i++) { B->link[i] = NULL; B->page[i] = 0; } B->count = 0; B -> spot = 0; return *B; } Node Delnode (Node *A, char B) { for (int i = 0; i < 26 ; i++) { - 6 -
  • 8. if (A -> link[i] != NULL ) { if (A -> link[i] -> name == B) { A -> link[i] = NULL; printf("%c์— LINK&d์— %c๋ฅผ ์‚ญ์ œ n",A -> name,i,B); } } } return *A; } int search (Node *A, char B) { int x = 0; int i; for (i = 0; i < 26 ; i++) { if (A -> link[i] != NULL ) { if (A -> link[i] -> name == B) { x = 1; break; } } else break; } return x; } int searchspot (Node *A, char B) { for (int i = 0; i < 26 ; i++) { if (A -> link[i] != NULL ) { if (A -> link[i] -> name == B) {return A -> link[i] -> spot;} } } return 0; } void Printans (Node *A, char ans[], int x) { ans[x] = A -> name; for (int i = 0 ; i < 26 ; i++) { if (A -> count != 0) { for (int j=0; j<=x; j++) { printf("%c %d", ans[j],A->count); } for (int j=0; j<=26; j++) { if (A->page[j] == 1) { printf("%d",j+1); } } } else {} if (A->link[i] != NULL) { Printans( A->link[i],ans,x); } else {} } return; } // ์ถœ๋ ฅ ํ”„๋กœ๊ทธ๋žจ ์ดˆ์•ˆ์„ ๋ถ„์„ํ•˜์—ฌ ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰์ด ๋˜๊ธฐ์œ„ํ•˜์—ฌ ์–ด๋–ค์‹์œผ๋กœ ๋ฐ”๊ฟ”๋ณด๋ฉด ์ข‹์„์ง€ ์กฐ์›๋“ค๊ณผ ํšŒ์˜๋‚ด์šฉ ํ† ์˜๋ฅผ ์ง„ํ–‰ ํ•˜์˜€์Œ. ๋ฌธ์ œ์  ํ”„๋กœ๊ทธ๋žจ ์ดˆ์•ˆ ๋ถ„์„์„ ํ•œ ๊ฒฐ๊ณผ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒ ํ•˜์˜€๋Š”๋ฐ ๋ฌด์—‡ ๋•Œ๋ฌธ์— ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒ ํ•˜์˜€๋Š”์ง€ - 7 -
  • 9. ์ฐพ์ง€๋ฅผ ๋ชปํ•˜์—ฌ ํ—ค๋งค์—ˆ์Œ. ์ฃผ์œ„ ์ง€์ธ์˜ ๋„์›€์„ ๋ฐ›์•„ ๋ฌธ์ œ์ ์„ ์ฐพ์•„ ๋ณด๋ ค๊ณ  ํ•˜์˜€์œผ๋‚˜, ์ฐพ์ง€ ๋ชปํ•˜์—ฌ ๋ฌธ์ž์—ด์„ ๋ฐฐ์—ด์— ์˜ฎ๊ฒจ์„œ ํ’€์–ด๋ณด๊ธฐ๋กœ ํ•˜์˜€์Œ. ๋„ท์งธ๋‚  2012 ๋…„ 5 ์›” 17 ์ผ ๋ชฉ์š”์ผ ํšŒ์˜์ฃผ์ œ ํ”„๋กœ๊ทธ๋žจ ๋ณด์™„ #include <stdio.h> #include <stdlib.h> #include <conio.h> #include <windows.h> #include <string.h> struct Node { char name; Node *link[26]; int page[26]; int count; int spot; }; Node addtree (Node *A, Node *B); Node AddNode (char A); Node Delnode (Node *A, char B); int Search (Node *A, char B); int Searchspot (Node *A, char B); void Printans (Node *A, char ans[], int x); int main () { int i,j,x,z; int check=0; FILE *point; char arr[100]; int a; int m=0; int Sizec; // printf("์ง„ํ–‰์ค‘"); Node *tree = (Node *)malloc(sizeof(Node)); // printf("์ง„ํ–‰์ค‘"); point=fopen("D://file.txt","r"); ํ”„๋กœ๊ทธ๋žจ if(point==NULL) { ์ˆ˜์ •์•ˆ return 1; } while(1) //ํ…์ŠคํŠธ ํŒŒ์ผ์— ์ €์žฅ๋˜์–ด ์žˆ๋Š” ๋ฌธ์žฅ๋“ค์„ ๋ฐฐ์—ด์— ๋„ฃ์–ด์„œ ์ €์žฅ. { a=fgetc(point); if((a>=65 && a<=90) || (a>=97 && a<=122)) { arr[m]=a; if(a==EOF) { break; } else { m++; } } else if(a==' ' || a=='n') { arr[m]=' '; if(a==EOF) { break; } else { m++; } } else { if(a==EOF) { break; } } } fclose(point); for(i=0;i<m;i++) //๋ฐฐ์—ด์— ์ €์žฅ๋œ ๋ฌธ์ž๋“ค์„ ์†Œ๋ฌธ์ž๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ ๋‹ค์‹œ ๋ฐฐ์—ด์— ์ €์žฅ. - 8 -
  • 10. { if(arr[i]>=65 && arr[i]<=90) { arr[i]=arr[i]+32; } printf("%c",arr[i]); } fclose(point); printf("n"); Sizec = m; i = 0; j = 1; z = 2; m = 0; tree[i] = AddNode('R'); for(;;) {//ํ…์ŠคํŠธ ํŒŒ์ผ์— ์ €์žฅ๋˜์–ด ์žˆ๋Š” ๋ฌธ์žฅ๋“ค์„ ๋ฐฐ์—ด์— ๋„ฃ์–ด์„œ ์ €์žฅ. if(arr[m]>='a' && arr[m]<='z') {// ์•ŒํŒŒ๋ฒณ์ด๋ฉด ๋…ธ๋“œ ์ง„ํ–‰ printf("%cn",arr[m]); check = Search(&tree[i],arr[m]); // ๋…ธ๋“œ ์žˆ๋Š”์ง€ ํ™•์ธ if (check == 0 ) { // ๋…ธ๋“œ๊ฐ€ ์—†์œผ๋ฉด ๋…ธ๋“œ ์ถ”๊ฐ€ ํ•˜๊ณ  ์•„๋ž˜ ๋…ธ๋“œ๋กœ ์ด๋™. tree[j] = AddNode(arr[m]); tree[j].spot = j;//๋…ธ๋“œ ์œ„์น˜๋ฅผ ์ €์žฅ. tree[i] = addtree(&tree[i],&tree[j]); i = j; // i๋Š” ์ง„ํ–‰ ๋…ธ๋“œ j++; // ๋…ธ๋“œ ์ƒ์„ฑ ์œ„์น˜ } else { i = Searchspot(&tree[i],arr[m]); printf("%d - %cn",i,tree[i].name); } // ๋…ธ๋“œ๊ฐ€ ์žˆ์œผ๋ฉด ๊ทธ๋Œ€๋กœ ์œ„์น˜๋งŒ ์ด๋™. } else if(arr[m]==' ' || arr[m]=='n') { // ๊ณต๋ฐฑ์ด๋‚˜ n ์ผ์‹œ, ์นด์šดํ„ฐ ์ฆ๊ฐ€. ๊ทธ๋ฆฌ๊ณ  root๋กœ ๋ณต๊ท€. tree[i].count++; // ๋‹จ์–ด ๊ฐฏ์ˆ˜ ํ‘œ๊ธฐ tree[i].page[z]=1; // ๋“ฑ์žฅ ํŽ˜์ด์ง€ ํ‘œ๊ธฐ i = 0; } else if(arr[m]=='.') {// ์ž„์˜๋กœ ๋‹ค์ŒํŽ˜์ด์ง€๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๊ธฐํ˜ธ๋ฅผ + ๋กœ ์ •์˜ํ•จ. z++; } else if(arr[m]==EOF) {break; // ์•„๋ฌด ๊ฒƒ๋„ ์—†์„ ์‹œ ์ข…๋ฃŒ } if (Sizec < m) break; m++; } char ANS[50] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}; // ์˜๋‹จ์–ด ์ตœ ์žฅ ๊ธธ์ด ๋‹จ์–ด๋Š” 1000์ž๊ฐ€ ๋„˜์–ด๊ฐ€์ง€๋งŒ ์ผ๋ฐ˜์ ์œผ๋กœ 50์ž ๋ฏธ๋งŒ. printf("nWord Count Linesn"); Printans(&tree[0],ANS,0); // ์ถœ๋ ฅ system("PAUSE"); getch(); return 0; } Node addtree (Node *A, Node *B) { for (int i = 0; i < 26 ; i++) { if (A->link[i] == NULL) { A -> link[i] = B; printf("%c์˜ LINK%d์— %c๋ฅผ ์‚ฝ์ž… n",A -> name,i,B -> name); break; } else {} } return *A; - 9 -
  • 11. } Node AddNode (char A) { Node *B = (Node *)malloc(sizeof(Node)); B->name = A; for (int i = 0; i < 26 ; i++) { B->link[i] = NULL; B->page[i] = 0; } B->count = 0; B -> spot = 0; return *B; } Node Delnode (Node *A, char B) { for (int i = 0; i < 26 ; i++) { if (A -> link[i] != NULL ) { if (A -> link[i] -> name == B) { A -> link[i] = NULL; printf("%c์— LINK&d์— %c๋ฅผ ์‚ญ์ œ n",A -> name,i,B); } } } return *A; } int Search (Node *A, char B) { int x = 0; int i; for (i = 0; i < 26 ; i++) { if (A -> link[i] != NULL ) { if (A -> link[i] -> name == B) { x = 1; break; } } else {break;} } return x; } int Searchspot (Node *A, char B) { for (int i = 0; i < 26 ; i++) { if (A -> link[i] != NULL ) { if (A -> link[i] -> name == B) {return A -> link[i] -> spot;} } } return 0; } void Printans (Node *A, char ans[], int x) { ans[x] = A -> name; int i; int j; - 10 -
  • 12. if (A -> count != 0) { printf("๋‹จ์–ด : "); for (j=0; j<=x; j++) { printf("%c", ans[j]); } // printf("%c", A->name); printf("๋“ฑ์žฅ ํšŸ์ˆ˜ : "); printf("%d",A->count); printf("๋“ฑ์žฅ ํŽ˜์ด์ง€ : "); for (j=0; j<26; j++) { if (A ->page[j] == 1) { printf("%d n",j+1); } } } for (i = 0 ; i < 26 ; i++) { if (A->link[i] != NULL) { if (A -> spot != 0) x+=1; Printans( A->link[i],ans,x); } else {} } return; } // ์ถœ๋ ฅ ์ดˆ์•ˆ ์†Œ์Šค์—์„œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜์˜€๋Š”๋ฐ ์˜ค๋ฅ˜๋ฅผ ์ฐพ์ง€ ๋ชปํ•˜์—ฌ ๋ฌธ์ž์—ด์„ ๋ฐฐ์—ด์— ์˜ฎ๊ฒจํ’€์–ด๋ณด๊ธฐ ํšŒ์˜๋‚ด์šฉ ๋กœ ํ•˜์—ฌ ๋ถ„๋ฆฌ ์‹œ์ผœ๋ณด๊ธฐ๋กœ ํ•˜์˜€์Œ. ๋ฌธ์ž์—ด์„ ๋ฐฐ์—ด์— ์˜ฎ๊ฒจ ํ’€์–ด ๋ณธ ํ›„ else๊ตฌ๋ฌธ์„ if ๊ตฌ๋ฌธ์œผ๋กœ ๋ฐ”๊พผํ›„ ์‹คํ–‰ํ•˜๋‹ˆ ์˜ค๋ฅ˜๋Š” ๋ฐœ์ƒ ๋ฌธ์ œ์  ํ•˜์ง€ ์•Š์•˜์Œ. ๊ทธ๋Ÿฌ๋‚˜ 6๊ธ€์ž๋ฅผ ๋„˜์–ด์„œ ์ž…๋ ฅ ๋  ๊ฒฝ์šฐ ์˜ค๋ฅ˜๊ฐ€๋ฐœ์ƒ๋จ. ์˜ค๋ฅ˜๋ฅผ ์ฐพ์œผ๋ ค ํ•˜์˜€์œผ๋‚˜ ์ฐพ์ง€ ๋ชปํ•˜์˜€์Œ. ๊ฒฐ๊ณผ ๋ฐœํ‘œ #include <stdio.h> #include <stdlib.h> #include <conio.h> #include <windows.h> #include <string.h> struct Node { char name; Node *link[26]; int page[26]; int count; int spot; }; Node addtree (Node *A, Node *B); Node AddNode (char A); Node Delnode (Node *A, char B); int Search (Node *A, char B); int Searchspot (Node *A, char B); ํ”„๋กœ๊ทธ๋žจ ์†Œ์Šค void Printans (Node *A, char ans[], int x); int main () { int i,j,x,z; int check=0; FILE *point; char arr[100]; int a; int m=0; int Sizec; // printf("์ง„ํ–‰์ค‘"); Node *tree = (Node *)malloc(sizeof(Node)); // printf("์ง„ํ–‰์ค‘"); point=fopen("C://file.txt","r"); if(point==NULL) { - 11 -
  • 13. return 1; } while(1) //ํ…์ŠคํŠธ ํŒŒ์ผ์— ์ €์žฅ๋˜์–ด ์žˆ๋Š” ๋ฌธ์žฅ๋“ค์„ ๋ฐฐ์—ด์— ๋„ฃ์–ด์„œ ์ €์žฅ. { a=fgetc(point); if((a>=65 && a<=90) || (a>=97 && a<=122) || (a == '+')) { arr[m]=a; if(a==EOF) { break; } else { m++; } } else if(a==' ' || a=='n') { arr[m]=' '; if(a==EOF) { break; } else { m++; } } else { if(a==EOF) { break; } } } fclose(point); for(i=0;i<m;i++) //๋ฐฐ์—ด์— ์ €์žฅ๋œ ๋ฌธ์ž๋“ค์„ ์†Œ๋ฌธ์ž๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ ๋‹ค์‹œ ๋ฐฐ์—ด์— ์ €์žฅ. { if(arr[i]>=65 && arr[i]<=90) { arr[i]=arr[i]+32; } printf("%c",arr[i]); } fclose(point); printf("n"); Sizec = m; i = 0; j = 1; z = 0; m = 0; tree[i] = AddNode('R'); for(;;) {//ํ…์ŠคํŠธ ํŒŒ์ผ์— ์ €์žฅ๋˜์–ด ์žˆ๋Š” ๋ฌธ์žฅ๋“ค์„ ๋ฐฐ์—ด์— ๋„ฃ์–ด์„œ ์ €์žฅ. if(arr[m]>='a' && arr[m]<='z') {// ์•ŒํŒŒ๋ฒณ์ด๋ฉด ๋…ธ๋“œ ์ง„ํ–‰ // printf("%cn",arr[m]); check = Search(&tree[i],arr[m]); // ๋…ธ๋“œ ์žˆ๋Š”์ง€ ํ™•์ธ if (check == 0 ) { // ๋…ธ๋“œ๊ฐ€ ์—†์œผ๋ฉด ๋…ธ๋“œ ์ถ”๊ฐ€ ํ•˜๊ณ  ์•„๋ž˜ ๋…ธ๋“œ๋กœ ์ด๋™. tree[j] = AddNode(arr[m]); tree[j].spot = j;//๋…ธ๋“œ ์œ„์น˜๋ฅผ ์ €์žฅ. tree[i] = addtree(&tree[i],&tree[j]); i = j; // i๋Š” ์ง„ํ–‰ ๋…ธ๋“œ j++; // ๋…ธ๋“œ ์ƒ์„ฑ ์œ„์น˜ } else { i = Searchspot(&tree[i],arr[m]); printf("%c๊ฐ€ ์กด์žฌํ•˜์—ฌ ๋‚ด๋ ค๊ฐ‘๋‹ˆ๋‹ค.n",tree[i].name); } // ๋…ธ๋“œ๊ฐ€ ์žˆ์œผ๋ฉด ๊ทธ๋Œ€๋กœ ์œ„์น˜๋งŒ ์ด๋™. } if(arr[m]==' ' || arr[m]=='n') { // ๊ณต๋ฐฑ์ด๋‚˜ n ์ผ์‹œ, ์นด์šดํ„ฐ ์ฆ๊ฐ€. ๊ทธ๋ฆฌ๊ณ  root๋กœ ๋ณต๊ท€. tree[i].count++; // ๋‹จ์–ด ๊ฐฏ์ˆ˜ ํ‘œ๊ธฐ tree[i].page[z]=1; // ๋“ฑ์žฅ ํŽ˜์ด์ง€ ํ‘œ๊ธฐ i = 0; } if(arr[m]=='+') {// ์ž„์˜๋กœ ๋‹ค์ŒํŽ˜์ด์ง€๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๊ธฐํ˜ธ๋ฅผ + ๋กœ ์ •์˜ํ•จ. z++; - 12 -
  • 14. } if(arr[m]==EOF) {break; // ์•„๋ฌด ๊ฒƒ๋„ ์—†์„ ์‹œ ์ข…๋ฃŒ } if (Sizec < m) break; m++; } char ANS[50] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}; // ์˜๋‹จ์–ด ์ตœ ์žฅ ๊ธธ์ด ๋‹จ์–ด๋Š” 1000์ž๊ฐ€ ๋„˜์–ด๊ฐ€์ง€๋งŒ ์ผ๋ฐ˜์ ์œผ๋กœ 50์ž ๋ฏธ๋งŒ. printf("nWord Count Linesn"); Printans(&tree[0],ANS,0); // ์ถœ๋ ฅ system("PAUSE"); getch(); return 0; } Node addtree (Node *A, Node *B) { for (int i = 0; i < 26 ; i++) { if (A->link[i] == NULL) { A -> link[i] = B; printf("%c์˜ LINK%d์— %c๋ฅผ ์‚ฝ์ž… n",A -> name,i,B -> name); break; } else {} } return *A; } Node AddNode (char A) { Node *B = (Node *)malloc(sizeof(Node)); B->name = A; for (int i = 0; i < 26 ; i++) { B->link[i] = NULL; B->page[i] = 0; } B->count = 0; B -> spot = 0; return *B; } Node Delnode (Node *A, char B) { for (int i = 0; i < 26 ; i++) { if (A -> link[i] != NULL ) { if (A -> link[i] -> name == B) { A -> link[i] = NULL; printf("%c์— LINK&d์— %c๋ฅผ ์‚ญ์ œ n",A -> name,i,B); } } } return *A; } int Search (Node *A, char B) { int x = 0; int i; for (i = 0; i < 26 ; i++) { if (A -> link[i] != NULL ) { if (A -> link[i] -> name == B) { x = 1; break; } - 13 -
  • 15. } else {break;} } return x; } int Searchspot (Node *A, char B) { for (int i = 0; i < 26 ; i++) { if (A -> link[i] != NULL ) { if (A -> link[i] -> name == B) {return A -> link[i] -> spot;} } } return 0; } void Printans (Node *A, char ans[], int x) { ans[x] = A -> name; int i; int j; if (A -> count != 0 && A -> name != 'R' ) { printf("๋‹จ์–ด : "); for (j=0; j<=x; j++) { printf("%c", ans[j]); } // printf("%c", A->name); printf("๋“ฑ์žฅ ํšŸ์ˆ˜ : "); printf("%d",A->count); printf("๋“ฑ์žฅ ํŽ˜์ด์ง€ : "); for (j=0; j<26; j++) { if (A ->page[j] == 1) { printf("%d n",j+1); } } } for (i = 0 ; i < 26 ; i++) { if (A->link[i] != NULL) { if (A -> spot != 0) x+=1; Printans( A->link[i],ans,x); } else {} } return; } // ์ถœ๋ ฅ ๋ฌธ์ œํ™”๋ฉด - 14 -
  • 16. ๋งจ์œ„ ๋…ธ๋“œ๋Š” ๋น„์›€ โ†“ space ๋ถ€๋ถ„์„ ๊ธฐ์ค€์œผ๋กœ ๋‹จ์–ด๋ฅผ ๋–ผ์–ด๋‚ด๊ณ  ๋งจ ์•ž ๊ธ€์ž๋ฅผ 2level ๋…ธ๋“œ์— ๋„ฃ๋Š”๋‹ค. โ†“ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ฐœ์š” ๋งจ์•ž ๊ธ€์ž๊ฐ€ ๊ฐ™์„ ๊ฒฝ์šฐ ๊ทธ๋‹ค์Œ ํ•˜์œ„ ๋ ˆ๋ฒจ์— ๋‹ค์Œ ๋ฌธ์ž๋ฅผ ๋„ฃ๋Š”๋‹ค. โ†“ ์—†์„ ๊ฒฝ์šฐ ๋‹จ์–ด๋ฅผ ์ˆœ์„œ๋Œ€๋กœ ํ•œ ๋ฌธ์ž์”ฉ ๋„ฃ๋Š”๋‹ค. โ†“ ๋‘ ๊ฐœ์˜ ํŠธ๋ฆฌ(1line,2line)๋ฅผ ๋งŒ๋“ค๊ณ  ๋น„๊ตํ•˜์—ฌ ๋…ธ๋“œ๋ฅผ ๋น„๊ต ํ•˜์—ฌ ์ถœ๋ ฅํ•œ๋‹ค ๋ฌธ์ž ์ž…๋ ฅ์ด 6๊ฐœ ์ด์ƒ ๋“ค์–ด๊ฐ€๋ฉด ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒ. ์ž…๋ ฅ ์–‘์‹์€ +๊ฐ€ ํŽ˜์ด์ง€ ๊ตฌ๋ถ„์„ ์ด๊ณ  ๋งˆ์ง€๋ง‰์— ๋„์›Œ์“ฐ๊ธฐ๋‚˜ ์—”ํ„ฐ๋ฅผ ํ•˜์—ฌ์•ผ ์ข…๋ฃŒ. ์ตœ์ข… ๋ฐ˜์„ฑ ๊ท ํ˜•ํŠธ๋ฆฌ์˜ ๊ตฌํ˜„๊ณผ์ •์—์„œ ๊ตฌํ˜„์„ ํ•˜๊ธฐ๊ฐ€ ์–ด๋ ค์›Œ์„œ ๋ฐฐ์—ด๋กœ ๋ฐ›์•„์„œ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ์‚ฌ ์šฉ ํ•˜์˜€์Šต๋‹ˆ๋‹ค. - 15 -