๐Ÿ“Œ ๊ธฐ์ˆ ๋ฉด์ ‘ ์งˆ๋ฌธ (๋‹ตํ•ด๋ณด๊ธฐ)

Q. ์ž๋ฃŒ๊ตฌ์กฐ์˜ ์ •์˜์™€ ์ค‘์š”ํ•œ ์ด์œ ๋ฅผ ์„ค๋ช…ํ•˜์„ธ์š”.

๋”๋ณด๊ธฐ

    A. ๋ง ๊ทธ๋ž˜๋„ ์ž๋ฃŒ๋ฅผ ์ €์žฅํ•˜๋Š” ๊ตฌ์กฐ = ๋Œ€๋Ÿ‰์˜ ๋ฐ์ดํ„ฐ๋ฅผ ํšจ์œจ์ ์œผ๋กœ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๊ฒŒ๋” ํ•˜๋Š” ๊ตฌ์กฐ
         ๋ฌธ์ œ์˜ ํ•ด๊ฒฐ์„ ์œ„ํ•ด ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ํ˜•ํƒœ์˜ ์ž๋ฃŒ๊ตฌ์กฐ๊ฐ€ ํ™œ์šฉ๋œ๋‹ค.
          - ํ˜•ํƒœ์— ๋”ฐ๋ผ ์žฅ๋‹จ์ ์ด ์กด์žฌํ•œ๋‹ค.
         - ํ”„๋กœ๊ทธ๋žจ์—์„œ ํŠน์ • ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•ด ์ ์ •ํ•œ ์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ์ข‹์€ ์„ฑ๋Šฅ์„ ๋‚ผ ์ˆ˜ ์žˆ๋‹ค.

Q. ์ž๋ฃŒ๊ตฌ์กฐ๋ž€? / ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋ž€?

๋”๋ณด๊ธฐ

    A. ์ž๋ฃŒ๊ตฌ์กฐ : ๋ฐ์ดํ„ฐ๋ฅผ ์–ด๋– ํ•œ ํ˜•ํƒœ๋กœ ์ €์žฅํ•˜๊ณ  ๊ด€๋ฆฌํ•  ๊ฒƒ์ธ์ง€์— ๋Œ€ํ•œ ๋ฐฉ๋ฒ•.
            → ๊ทธ๋ž˜์„œ ์ž๋ฃŒ๊ตฌ์กฐ๋Š” ์–ด๋–ป๊ฒŒ ํšจ์œจ์ ์œผ๋กœ ์ž๋ฃŒ๋ฅผ ์ €์žฅํ•  ๊ฒƒ์ธ๊ฐ€์— ๋Œ€ํ•œ ๊ณ ๋ฏผ์ด ํ•„์š”ํ•˜๋‹ค
        ์•Œ๊ณ ๋ฆฌ์ฆ˜ : ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฐพ๊ฑฐ๋‚˜ ๋ณ€ํ˜•ํ•˜๊ฑฐ๋‚˜ ์ˆ˜์ •ํ•  ๋•Œ ํ•„์š”ํ•œ ๋ฐฉ๋ฒ•.
            → ๊ทธ๋ž˜์„œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•œ ์ ˆ์ฐจ์— ๋Œ€ํ•œ ๊ณ ๋ฏผ์ด ํ•„์š”ํ•˜๋‹ค.

Q. ์•Œ๊ณ  ์žˆ๋Š” ์ž๋ฃŒ๊ตฌ์กฐ์˜ ์ข…๋ฅ˜์—  ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•ด๋ณด์„ธ์š”.

๋”๋ณด๊ธฐ

    A. List(๋ฆฌ์ŠคํŠธ), Linked List(๋งํฌ๋“œ ๋ฆฌ์ŠคํŠธ), Array(๋ฐฐ์—ด), Stack(์Šคํƒ), Queue(ํ), Dequeue(๋””ํ), Tree(ํŠธ๋ฆฌ),

        Heap(ํž™), Graph(๊ทธ๋ž˜ํ”„)

Q. ๋น…์˜ค ํ‘œ๊ธฐ๋ฒ•์— ๋Œ€ํ•ด์„œ ์„ค๋ช…ํ•ด์ฃผ์„ธ์š”.

๋”๋ณด๊ธฐ

    A. ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ํšจ์œจ์„ฑ์„ ํ‘œ๊ธฐํ•ด์ฃผ๋Š” ํ‘œ๊ธฐ๋ฒ•. ๋ณดํ†ต ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„์— ์ฃผ๋กœ ์‚ฌ์šฉ๋œ๋‹ค.

 

 

์ž๋ฃŒ๊ตฌ์กฐ๋ž€ ๋ฌด์—‡์ธ๊ฐ€?

๋ง ๊ทธ๋ž˜๋„ ์ž๋ฃŒ๋ฅผ ์ €์žฅํ•˜๋Š” ๊ตฌ์กฐ๋กœ, ๋Œ€๋Ÿ‰์˜ ๋ฐ์ดํ„ฐ๋ฅผ ํšจ์œจ์ ์œผ๋กœ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๊ฒŒ๋” ํ•˜๋Š” ๋ฐ์ดํ„ฐ์˜ ๊ตฌ์กฐ.
  • ๋ฌธ์ œ์˜ ํ•ด๊ฒฐ์„ ์œ„ํ•ด ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ํ˜•ํƒœ์˜ ์ž๋ฃŒ๊ตฌ์กฐ๊ฐ€ ํ™œ์šฉ๋œ๋‹ค.
  • ํ˜•ํƒœ์— ๋”ฐ๋ผ ์žฅ๋‹จ์ ์ด ์กด์žฌํ•˜๋ฉฐ, ๊ตฌํ˜„ํ•˜๊ณ ์ž ํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์˜ ์„ฑ๋Šฅ์„ ๊ณ ๋ คํ•˜์—ฌ ์•Œ๋งž์€ ์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ ์„ ํƒํ•ด์•ผ ํ•œ๋‹ค.
  • ์ž๋ฃŒ๋ฅผ ํšจ์œจ์ ์œผ๋กœ ๋‹ด๊ธฐ ์œ„ํ•ด ์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ ๋ฐฐ์šฐ๋ฉฐ, ํ”„๋กœ๊ทธ๋žจ์—์„œ ํŠน์ • ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•ด ์ ์ •ํ•œ ์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ์ข‹์€ ์„ฑ๋Šฅ์„ ๋‚ผ ์ˆ˜ ์žˆ๋‹ค.

 

์ž๋ฃŒ๊ตฌ์กฐ์˜ ๋ถ„๋ฅ˜

  • ๋‹จ์ˆœ ๊ตฌ์กฐ : ํ”„๋กœ๊ทธ๋ž˜๋ฐ์—์„œ ์‚ฌ์šฉ๋˜๋Š” ๊ธฐ๋ณธ ๋ฐ์ดํ„ฐ ํƒ€์ž…
  • ์„ ํ˜• ๊ตฌ์กฐ : ์ €์žฅ๋˜๋Š” ์ž๋ฃŒ์˜ ์ „ํ›„๊ด€๊ณ„๊ฐ€ 1:1 (๋ฆฌ์ŠคํŠธ, ์Šคํƒ, ํ)
  • ๋น„์„ ํ˜• ๊ตฌ์กฐ : ๋ฐ์ดํ„ฐ ํ•ญ๋ชฉ ์‚ฌ์ด์˜ ๊ด€๊ณ„๊ฐ€ 1:n ๋˜๋Š” n:m (ํŠธ๋ฆฌ, ๊ทธ๋ž˜ํ”„ ๋“ฑ)
  • ํŒŒ์ผ ๊ตฌ์กฐ : ์„œ๋กœ ๊ด€๋ จ๋œ ํ•„๋“œ๋“ค๋กœ ๊ตฌ์„ฑ๋œ ๋ ˆ์ฝ”๋“œ์˜ ์ง‘ํ•ฉ์ธ ํŒŒ์ผ์— ๋Œ€ํ•œ ์ž๋ฃŒ๊ตฌ์กฐ

 

 

 

์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋ž€ ๋ฌด์—‡์ธ๊ฐ€?

์ž๋ฃŒ๊ตฌ์กฐ๊ฐ€ ์ž๋ฃŒ์˜ ํ‘œํ˜„ ๋ฐ ์ €์žฅ๋ฐฉ๋ฒ•์„ ๋œปํ•œ๋‹ค๋ฉด, ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ์ด๋ ‡๊ฒŒ ํ‘œํ˜„ ๋ฐ ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ํ™œ์šฉํ•˜์—ฌ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์˜๋ฏธํ•œ๋‹ค.

 

 

์‹œ๊ฐ„ ๋ณต์žก๋„์™€ ๊ณต๊ฐ„ ๋ณต์žก๋„

  • ์‹œ๊ฐ„ ๋ณต์žก๋„(Time complexity) :  ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‹คํ–‰์‹œ์ผœ ์™„๋ฃŒํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ์ปดํ“จํ„ฐ ์‹œ๊ฐ„์˜ ์–‘
์‹œ๊ฐ„ ๋ณต์žก๋„ ๊ตฌํ•˜๋Š” ๋ฒ• : '๋ฐ์ดํ„ฐ์˜ ์ˆ˜ n์— ๋Œ€ํ•œ ์—ฐ์‚ฐ ํšŸ์ˆ˜์˜ ํ•จ์ˆ˜ T(n)์„ ๊ตฌ์„ฑํ•œ๋‹ค’. 
                                → ๋ฐ์ดํ„ฐ ์ˆ˜์˜ ์ฆ๊ฐ€์— ๋”ฐ๋ฅธ ์—ฐ์‚ฐ ํšŸ์ˆ˜์˜ ๋ณ€ํ™” ์ •๋„๋ฅผ ํŒ๋‹จํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ๊ณต๊ฐ„ ๋ณต์žก๋„(space complexity) : ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‹คํ–‰์‹œ์ผœ ์™„๋ฃŒํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ๋ฉ”๋ชจ๋ฆฌ์˜ ์–‘

 

 

๋น…-์˜ค ํ‘œ๊ธฐ๋ฒ•(Big-Oh Notation)

์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ์ˆ˜ํ•™์ ์ธ ํ‘œ๊ธฐ๋ฒ•์ด๋ฉฐ, O(f(n))์œผ๋กœ ๋‚˜ํƒ€๋‚ธ๋‹ค.

 

  • O(1) : ์ƒ์ˆ˜ํ˜• ๋น…-์˜ค, ๋ฐ์ดํ„ฐ ์ˆ˜์— ์ƒ๊ด€์—†์ด ์—ฐ์‚ฐํšŸ์ˆ˜๊ฐ€ ๊ณ ์ • (ex: push, pop)
  • O(log n) : ๋กœ๊ทธํ˜• ๋น…-์˜ค, '๋ฐ์ดํ„ฐ ์ˆ˜์˜ ์ฆ๊ฐ€์œจ'์— ๋น„ํ•ด์„œ '์—ฐ์‚ฐ ํšŸ์ˆ˜์˜ ์ฆ๊ฐ€์œจ'์ด ํ›จ์”ฌ ๋‚ฎ์Œ (ex: ์ด์ง„ํŠธ๋ฆฌ)
  • O(n) : ์„ ํ˜• ๋น…-์˜ค, ๋ฐ์ดํ„ฐ์˜ ์ˆ˜์™€ ์—ฐ์‚ฐํšŸ์ˆ˜๊ฐ€ ๋น„๋ก€ํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋‹ค  (ex: for๋ฌธ)
  • O(n*log n) : ๋ฐ์ดํ„ฐ์˜ ์ˆ˜๊ฐ€ ๋‘ ๋ฐฐ๋กœ ๋Š˜ ๋•Œ, ์—ฐ์‚ฐ ํšŸ์ˆ˜๋Š” ๋‘ ๋ฐฐ๋ฅผ ์กฐ๊ธˆ ๋„˜๊ฒŒ ์ฆ๊ฐ€  (ex: ํ€ต ์ •๋ ฌ, ๋ณ‘ํ•ฉ ์ •๋ ฌ, ํž™ ์ •๋ ฌ)
  • O(n²) : ๋ฐ์ดํ„ฐ ์ˆ˜์˜ ์ œ๊ณฑ์— ํ•ด๋‹นํ•˜๋Š” ์—ฐ์‚ฐ ํšŸ์ˆ˜๋ฅผ ์š”๊ตฌ
  • O(n³) : ๋ฐ์ดํ„ฐ ์ˆ˜์˜ ์„ธ์ œ๊ณฑ์— ํ•ด๋‹นํ•˜๋Š” ์—ฐ์‚ฐ ํšŸ์ˆ˜๋ฅผ ์š”๊ตฌ
  • O(2โฟ) : ์ง€์ˆ˜ํ˜•, ์‚ฌ์šฉํ•˜๊ธฐ์— ๋ฌด๋ฆฌ๊ฐ€ ์žˆ์œผ๋ฉฐ ๋ฐ์ดํ„ฐ ์ฆ๊ฐ€์— ๋”ฐ๋ผ ์—ฐ์‚ฐ ํšŸ์ˆ˜๊ฐ€ ๊ธฐํ•˜๊ธ‰์ˆ˜๋กœ ๋Š˜์–ด๋‚จ (ex: ํ”ผ๋ณด๋‚˜์น˜ ์ˆ˜)

์ง€๊ธˆ๊นŒ์ง€ ์„ค๋ช…ํ•œ ๋น…-์˜ค ํ‘œ๊ธฐ๋“ค์˜ ์„ฑ๋Šฅ(์ˆ˜ํ–‰ ์‹œ๊ฐ„, ์—ฐ์‚ฐ ํšŸ์ˆ˜)์˜ ๋Œ€์†Œ๋ฅผ ์ •๋ฆฌํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค

O(1) < O(log n) < O(n) < O(n*log n) < O(n²) < O(n³) < O(2โฟ)

 

 

 

์ž๋ฃŒ๊ตฌ์กฐ์™€ ์•Œ๊ณ ๋ฆฌ์ฆ˜

์ž๋ฃŒ๊ตฌ์กฐ : ๋ฐ์ดํ„ฐ๋ฅผ ์–ด๋– ํ•œ ํ˜•ํƒœ๋กœ ์ €์žฅํ•˜๊ณ  ๊ด€๋ฆฌํ•  ๊ฒƒ์ธ์ง€์— ๋Œ€ํ•œ ๋ฐฉ๋ฒ•.
→ ๊ทธ๋ž˜์„œ ์ž๋ฃŒ๊ตฌ์กฐ๋Š” ์–ด๋–ป๊ฒŒ ํšจ์œจ์ ์œผ๋กœ ์ž๋ฃŒ๋ฅผ ์ €์žฅํ•  ๊ฒƒ์ธ๊ฐ€์— ๋Œ€ํ•œ ๊ณ ๋ฏผ์ด ํ•„์š”ํ•˜๋‹ค.

 

์•Œ๊ณ ๋ฆฌ์ฆ˜ : ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฐพ๊ฑฐ๋‚˜ ๋ณ€ํ˜•ํ•˜๊ฑฐ๋‚˜ ์ˆ˜์ •ํ•  ๋•Œ ํ•„์š”ํ•œ ๋ฐฉ๋ฒ•.
 ๊ทธ๋ž˜์„œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•œ ์ ˆ์ฐจ์— ๋Œ€ํ•œ ๊ณ ๋ฏผ์ด ํ•„์š”ํ•˜๋‹ค.

 

ํ”„๋กœ๊ทธ๋žจ = ์ž๋ฃŒ๊ตฌ์กฐ + ์•Œ๊ณ ๋ฆฌ์ฆ˜

ํ”„๋กœ๊ทธ๋žจ์˜ ์ผ๋ฐ˜์  ์ •์˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜์—ฌ ํŠน์ • ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ์ผ๋ จ์˜ ๋ช…๋ น์–ด๋“ค์˜ ๋ชจ์Œ์ด๋‹ค. ์ฆ‰, ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•  ๋•Œ์— ์ž๋ฃŒ๊ตฌ์กฐ๊ฐ€ ์‚ฌ์šฉ๋˜๊ณ , ์ฃผ์–ด์ง„ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ํŠน์ • ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ์ ˆ์ฐจ๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์ธ ๊ฒƒ์ด๋‹ค. ๋”ฐ๋ผ์„œ, ํ”„๋กœ๊ทธ๋žจ์€ ์ž๋ฃŒ๊ตฌ์กฐ์™€ ์•Œ๊ณ ๋ฆฌ์ฆ˜์œผ๋กœ ์ด๋ฃจ์–ด์ง„๋‹ค๊ณ  ํ‘œํ˜„๋˜๊ณ ๋Š” ํ•œ๋‹ค.

ex : ์ตœ๋Œ“๊ฐ’์„ ์ฐพ๋Š” ํ”„๋กœ๊ทธ๋žจ = ๋ฐฐ์—ด(์ž๋ฃŒ๊ตฌ์กฐ) + ์ˆœ์ฐจ ํƒ์ƒ‰(์•Œ๊ณ ๋ฆฌ์ฆ˜)

 

BELATED ARTICLES

more