๐Ÿ•/์ž๋ฃŒ๊ตฌ์กฐ

[์ž๋ฃŒ๊ตฌ์กฐ] ๋ณต์žก๋„(์‹œ๊ฐ„ ๋ณต์žก๋„, ๊ณต๊ฐ„ ๋ณต์žก๋„), ๋น…์˜ค ํ‘œ๊ธฐ๋ฒ•

์œ ์ €001 2024. 1. 26. 00:56

์ž๋ฃŒ๊ตฌ์กฐ Data structure

: ํšจ์œจ์ ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๊ด€๋ฆฌ, ์ˆ˜์ •, ์‚ญ์ œ, ํƒ์ƒ‰, ์ €์žฅํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐ์ดํ„ฐ ์ง‘ํ•ฉ

 

์•Œ๊ณ ๋ฆฌ์ฆ˜ Algorithm

: ํ‘œํ˜„ ๋ฐ ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ๋Œ€์ƒ์œผ๋กœ ํ•˜๋Š” ๋ฌธ์ œ์˜ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•

 

โžก๏ธ ์ž๋ฃŒ๊ตฌ์กฐ๊ฐ€ ๊ฒฐ์ •๋˜์–ด์•ผ ํšจ์œจ์ ์ธ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๊ฒฐ์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.


๋ณต์žก๋„ Complexity

์–ด๋–ค ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ํšจ์œจ์ ์ธ์ง€๋ฅผ ํŒ๋‹จํ•˜๋Š” ์ฒ™๋„

 

1๏ธโƒฃ์†๋„, 2๏ธโƒฃ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰

  • ์†๋„์— ํ•ด๋‹นํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ˆ˜ํ–‰์‹œ๊ฐ„ ๋ถ„์„๊ฒฐ๊ณผ โžก๏ธ ์‹œ๊ฐ„๋ณต์žก๋„
  • ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰์— ํ•ด๋‹นํ•˜๋Š” ๋ถ„์„๊ฒฐ๊ณผ โžก๏ธ ๊ณต๊ฐ„ ๋ณต์žก๋„

 

โฐ์‹œ๊ฐ„ ๋ณต์žก๋„ Time Complexity

๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐ ๊ฑธ๋ฆฌ๋Š” ์‹œ๊ฐ„๊ณผ ์ž…๋ ฅ์˜ ํ•จ์ˆ˜ ๊ด€๊ณ„

โžก๏ธ ์–ด๋– ํ•œ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋กœ์ง์ด ์–ผ๋งˆ๋‚˜ ์˜ค๋žœ ์‹œ๊ฐ„์ด ๊ฑธ๋ฆฌ๋Š”์ง€

 

๐Ÿ’พ ๊ณต๊ฐ„ ๋ณต์žก๋„ Space Complexity

ํ”„๋กœ๊ทธ๋žจ์˜ ์‹คํ–‰๊ณผ ์™„๋ฃŒ์— ํ•„์š”ํ•œ ์ž์› ๊ณต๊ฐ„์˜ ์–‘

โžก๏ธ ์–ผ๋งˆ๋‚˜ ๋งŽ์€ ๊ณต๊ฐ„(๋ฉ”๋ชจ๋ฆฌ)๊ฐ€ ํ•„์š”ํ•œ์ง€

 

  • ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์‹คํ–‰์— ํ•„์š”ํ•œ ๊ณต๊ฐ„
    • ๊ณ ์ • ๊ณต๊ฐ„: ์•Œ๊ณ ๋ฆฌ์ฆ˜๊ณผ ๋ฌด๊ด€ํ•œ ๊ณต๊ฐ„
      - ์ฝ”๋“œ๊ฐ€ ์ €์žฅ๋˜๋Š” ๊ณต๊ฐ„, ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์‹คํ–‰์„ ์œ„ํ•ด ์‹œ์Šคํ…œ์ด ํ•„์š”๋กœ ํ•˜๋Š” ๊ณต๊ฐ„
    • ๊ฐ€๋ณ€ ๊ณต๊ฐ„: ์•Œ๊ณ ๋ฆฌ์ฆ˜๊ณผ ๋ฐ€์ ‘ํ•œ ๊ณต๊ฐ„
      - ๋ฌธ์ œ ํ•ด๊ฒฐ์„ ์œ„ํ•ด ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ํ•„์š”๋กœ ํ•˜๋Š” ๊ณต๊ฐ„, ๋ณ€์ˆ˜ ์ €์žฅ ๊ณต๊ฐ„, ์ฝ”๋“œ ์‹คํ–‰ ์‹œ ์žฌ๊ท€ ๋“ฑ์œผ๋กœ ๋™์  ์ƒ์„ฑ๋˜๋Š” ๊ณต๊ฐ„

๋น…์˜ค ํ‘œ๊ธฐ๋ฒ• Big-O

์ž…๋ ฅ ๋ฒ”์œ„ n์„ ๊ธฐ์ค€์œผ๋กœ ๋กœ์ง์ด ๋ช‡ ๋ฒˆ ๋ฐ˜๋ณต๋˜๋Š”์ง€ ๋‚˜ํƒ€๋‚ด๋Š” ๊ฒƒ

T(n)์ด ๋‹คํ•ญ์‹์œผ๋กœ ํ‘œํ˜„๋œ ๊ฒฝ์šฐ, ์ตœ๊ณ ์ฐจํ•ญ์˜ ์ฐจ์ˆ˜๊ฐ€ ๋น…-์˜ค๊ฐ€ ๋œ๋‹ค.

→ ๊ฐ€์žฅ ๋งŽ์ด ์˜ํ–ฅ์„ ๋ผ์น˜๋Š” ํ•ญ์˜ ์ƒ์ˆ˜ ์ธ์ž๋ฅผ ๋นผ๊ณ  ๋‚˜๋จธ์ง€ ํ•ญ์„ ์—†์• ๋Š” ๊ฒƒ

 

โžก๏ธ ๋ฐ์ดํ„ฐ ์ˆ˜์˜ ์ฆ๊ฐ€์— ๋”ฐ๋ฅธ ์—ฐ์‚ฐ ํšŸ์ˆ˜์˜ ์ฆ๊ฐ€ ํ˜•ํƒœ๋ฅผ ํ‘œํ˜„ํ•œ ๊ฒƒ

๋ฐ์ดํ„ฐ ์ˆ˜์— ๋”ฐ๋ฅธ ์‹œ๊ฐ„๋ณต์žก๋„ ํ‘œํ˜„ - O(n^2) ๋ณด๋‹ค O(n), O(logn), O(1)์„ ์ง€ํ–ฅํ•ด์•ผ ํ•œ๋‹ค

 

  • ๋Œ€ํ‘œ์ ์ธ ๋น…-์˜ค
    • O(1) : ์ƒ์ˆ˜ํ˜• ๋น…-์˜ค : ๋ฐ์ดํ„ฐ ์ˆ˜์— ์ƒ๊ด€์—†์ด ์—ฐ์‚ฐ ํšŸ์ˆ˜๊ฐ€ ๊ณ ์ •์ธ ์œ ํ˜•์˜ ์•Œ๊ณ ๋ฆฌ์ฆ˜
    • O(logN) : ๋กœ๊ทธํ˜• ๋น…-์˜ค : ๋ฐ์ดํ„ฐ ์ˆ˜์˜ ์ฆ๊ฐ€์œจ์— ๋น„ํ•ด ์—ฐ์‚ฐ ํšŸ์ˆ˜์˜ ์ฆ๊ฐ€์œจ์ด ํ›จ์”ฌ ๋‚ฎ์€ ์•Œ๊ณ ๋ฆฌ์ฆ˜
    • O(N) : ์„ ํ˜• ๋น…-์˜ค : ๋ฐ์ดํ„ฐ ์ˆ˜์™€ ์—ฐ์‚ฐ ํšŸ์ˆ˜๊ฐ€ ๋น„๋ก€ํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜
    • O(NlogN) : ์„ ํ˜•๋กœ๊ทธํ˜• ๋น…-์˜ค : ๋ฐ์ดํ„ฐ ์ˆ˜๊ฐ€ 2๋ฐฐ ์ฆ๊ฐ€ํ•  ๋•Œ ์—ฐ์‚ฐ ํšŸ์ˆ˜๋Š” 2๋ฐฐ๋ฅผ ์กฐ๊ธˆ ๋„˜๊ฒŒ ์ฆ๊ฐ€ํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜
    • O(N^2) : ๋ฐ์ดํ„ฐ ์ˆ˜์˜ ์ œ๊ณฑ์— ํ•ด๋‹นํ•˜๋Š” ์—ฐ์‚ฐ ํšŸ์ˆ˜๋ฅผ ์š”๊ตฌํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜ → ๋ฐ์ดํ„ฐ ์ˆ˜ ๅคš๊ฒฝ์šฐ ์‚ฌ์šฉํ•˜๊ธฐ ๋ถ€์ ์ ˆ
    • O(N^3) : ๋ฐ์ดํ„ฐ ์ˆ˜์˜ ์„ธ ์ œ๊ณฑ์— ํ•ด๋‹นํ•˜๋Š” ์—ฐ์‚ฐ ํšŸ์ˆ˜๋ฅผ ์š”๊ตฌํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜ → ๋ฐ์ดํ„ฐ ์ˆ˜ ๅคš๊ฒฝ์šฐ ์‚ฌ์šฉํ•˜๊ธฐ ๋ถ€์ ์ ˆ
    • O(2^N) : ์ง€์ˆ˜ํ˜• ๋น…-์˜ค : ๋ณดํ†ต ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ์—์„œ ์‚ฌ์šฉํ•˜๊ธฐ ๋งค์šฐ ๋ถ€์ ์ ˆ

โžก๏ธ ์„ฑ๋Šฅ(์ˆ˜ํ–‰์‹œ๊ฐ„, ์—ฐ์‚ฐํšŸ์ˆ˜)์˜ ๋Œ€์†Œ O(1) < O(logN) < O(N) < O(NlogN) < O(N^2) < O(N^3) < O(2^N)