๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Book TIL

๋…ธ๋งˆ๋“œ์ฝ”๋” ๋ถํด๋Ÿฝ ์žกํ•™์‚ฌ์ „ Day09 - ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜ | ํด๋ฆฐ์ฝ”๋“œ

by vividmin 2023. 1. 22.
320x100

 

 

๐Ÿ“š ๋ฒ”์œ„ : Ep26. ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜ - Ep29. ํด๋ฆฐ์ฝ”๋“œ

 

 

 

๐Ÿ““ ์ฑ…์—์„œ ๊ธฐ์–ตํ•˜๊ณ  ์‹ถ์€ ๋‚ด์šฉ์„ ์จ๋ณด์„ธ์š”.


์‹œ๊ฐ„๋ณต์žก๋„๋Š” ๊ฐ™์œผ๋ฉด์„œ(O(N²)) ์„ฑ๋Šฅ์€ ๋‹ค๋ฅธ ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜ 3๊ฐ€์ง€ = ๋ฒ„๋ธ” / ์„ ํƒ / ์‚ฝ์ž… ์ •๋ ฌ

โ–ผ ์‹œ๊ฐ„ ๋ณต์žก๋„๊ฐ€ ๊ฐ™์€๋ฐ ์†๋„ ์ฐจ์ด๊ฐ€ ๋‚˜๋Š” ์ด์œ ? 

๋”๋ณด๊ธฐ

๋ชจ๋‘ ์‹œ๊ฐ„๋ณต์žก๋„๋Š” ๊ฐ™์ง€๋งŒ ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ์ดˆ๊ธฐ ๋ฐ์ดํ„ฐ ์ƒํƒœ์— ๋”ฐ๋ผ ์ฒ˜๋ฆฌ ์†๋„๊ฐ€ ๋‹ฌ๋ผ์ง€๊ธฐ๋„ ํ•˜๊ณ , ์ตœ์•…์˜ ๊ฒฝ์šฐ์—๋Š” ์‹œ๊ฐ„์ด ๋งค์šฐ ๊ธธ์–ด์ง€๊ธฐ๋„ ํ•œ๋‹ค.

ํ•˜์ง€๋งŒ ์ตœ์•…์˜ ๊ฒฝ์šฐ๋Š” ์ •๋ฐœ ๋“œ๋ฌผ๊ธฐ ๋•Œ๋ฌธ์— ๋ณดํ†ต ํ‰๊ท ์ ์ธ ์‹œ๊ฐ„์ด ์ธก์ •๋œ๋‹ค. ๋”ฐ๋ผ์„œ ์‹œ๊ฐ„๋ณต์žก๋„๋Š” ๊ฐ™์ง€๋งŒ ์„ฑ๋Šฅ์ด ๋‹ฌ๋ผ์ง€๊ธฐ๋„ ํ•œ๋‹ค.

์‹ค์ œ๋กœ๋Š” bubble < selection < insertion ์ˆœ์œผ๋กœ ์„ฑ๋Šฅ์ด ์ข‹๋‹ค.

 

  • ๋ฒ„๋ธ”์ •๋ ฌ (Bubble Sort)
    • ์‹ค์ œ๋กœ ์ฉ ํšจ์œจ์ ์ด์ง€๋Š” ์•Š์•„์„œ ๋งŽ์ด ์‚ฌ์šฉํ•˜์ง€๋Š” ์•Š์Œ
    • ์™ผ์ชฝ, ์˜ค๋ฅธ์ชฝ์„ ๋น„๊ตํ•˜๋ฉด์„œ ์ž๋ฆฌ๋ฅผ ์ด๋™ํ•˜๋ฉฐ ํ•œ ์‚ฌ์ดํด์„ ๋„๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜
    • ์ตœ์•…์˜ ๊ฒฝ์šฐ์—๋Š” ๋ชจ๋“  ๋ฐ์ดํ„ฐ์˜ ์ž๋ฆฌ๊ฐ€ ๋ฐ”๋€” ์ˆ˜๋„ ์žˆ์Œ

 

@๋…ธ๋งˆ๋“œ์ฝ”๋” ์œ ํŠœ๋ธŒ

 

 

  • ์„ ํƒ ์ •๋ ฌ (Selection Sort)
    • ๊ฐ€์žฅ ์ž‘๊ฑฐ๋‚˜ ๊ฐ€์žฅ ํฐ ๋ฐ์ดํ„ฐ์˜ ์œ„์น˜๋ฅผ ๊ธฐ์–ตํ•ด์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ •๋ ฌํ•œ๋‹ค.
    • ์„ ํƒ๋œ ๋ฐ์ดํ„ฐ๊นŒ์ง€๋งŒ ์ˆœ์„œ๊ฐ€ ์ •๋ ฌ๋˜๋ฏ€๋กœ ๋ฒ„๋ธ” ์ •๋ ฌ๋ณด๋‹ค ํšจ์œจ์ ์ด๋‹ค.
     

@๋…ธ๋งˆ๋“œ์ฝ”๋” ์œ ํŠœ๋ธŒ

 

 

  • ์‚ฝ์ž… ์ •๋ ฌ (Inserttion Sort)
    • ์•ž์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๋ฉด์„œ ์ž๋ฆฌ๋ฅผ ์ •๋ ฌํ•ด ์ค€๋‹ค.
    • ํ•œ ์‚ฌ์ดํด๋‹น ์ด๋™์€ ํ•œ ๋ฒˆ๋งŒ ํ•œ๋‹ค.
    • ๋ฐ์ดํ„ฐ์˜ ์ž๋ฆฌ๋ฅผ ๊ตํ™˜ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ๋ฐ€์–ด ๋„ฃ๋Š” ๋ฐฉ์‹์ด๋‹ค.

@๋…ธ๋งˆ๋“œ์ฝ”๋” ์œ ํŠœ๋ธŒ

 

  • ์Šคํƒ (Stack) VS ํ (Queue)
    • ์ด ๋‘ ๊ฐ€์ง€๋Š” ๋ฐฐ์—ด์ฒ˜๋Ÿผ ์‹ค์ œ๋กœ ์กด์žฌํ•˜๋Š” ๊ฐœ๋…์€ ์•„๋‹ˆ๊ณ , ์ƒ์ƒ ์†์˜ ๊ฐœ๋… ⇒ ํ๋‚˜ ์Šคํƒ์€ ๋ฌธ๋ฒ•์œผ๋กœ ๊ตฌํ˜„๋œ ๊ฒƒ์ด ์•„๋‹˜
    • ํ”„๋กœ๊ทธ๋žจ ๋ฌธ๋ฒ•์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅ ์‹œ ๊ทœ์น™์„ ๋ถ€์—ฌํ•˜๊ธฐ๋งŒ ํ•˜๋ฉด ๋œ๋‹ค. 
    • ์ด๋Ÿฐ ๊ฐœ๋…์„ ์ถ”์ƒ๊ตฌ์กฐ (Abstract Data Type, ADT)๋ผ๊ณ  ํ•œ๋‹ค.
    • ์Šคํƒ (Stack)
      • ํŒฌ ์ผ€์ดํฌ ๋จน์„ ๋•Œ์™€ ๊ฐ™๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋ฉด ์‰ฝ๋‹ค.
      • ๋งจ ์•„๋ž˜๋ถ€ํ„ฐ ์Œ“์ด๊ณ , ๋งจ ์œ„์˜ ๋ฐ์ดํ„ฐ๋ถ€ํ„ฐ ์‚ฌ์šฉ๋œ๋‹ค. = LIFO ( Last in, First out)
      • ์›น ๋ธŒ๋ผ์šฐ์ €์˜ ๋’ค๋กœ ๊ฐ€๊ธฐ ๋‹จ์ถ•ํ‚ค(โฌ…) , ๋˜๋Œ๋ฆฌ๊ธฐ ํ‚ค(Ctrl + z)
    • ํ (Queue)
      • ๋ฒ„์Šค ํƒˆ ๋•Œ์™€ ๊ฐ™๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋ฉด ์‰ฝ๋‹ค.
      • ๋งจ ์•„๋ž˜๋ถ€ํ„ฐ ์Œ“์ด๊ณ , ๋งจ ์•„๋ž˜์— ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋ถ€ํ„ฐ ์‚ฌ์šฉ๋œ๋‹ค. = FIFO (First in, First out)
      • ์‡ผํ•‘๋ชฐ ์ฒ˜๋ฆฌ ์‹œ์Šคํ…œ ( ์ฃผ๋ฌธ์ด ๋“ค์–ด์˜จ ์ˆœ์„œ๋Œ€๋กœ data ์Œ“๊ณ , ์ œ์ผ ๋จผ์ € ๋“ค์–ด์˜จ ์ฃผ๋ฌธ๋ถ€ํ„ฐ ์ฒ˜๋ฆฌํ•จ)
  • ํ•ด์‹œ ํ…Œ์ด๋ธ”
    • ํ”„๋กœ๊ทธ๋žจ์˜ ์†๋„๋ฅผ ๋” ๋น ๋ฅด๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•ด์„œ ์‚ฌ์šฉํ•œ๋‹ค.
    • ํ‚ค์™€ ๊ฐ’์„ ์ง์ง€์–ด์„œ ๋ชจ์€ ๊ฒƒ
    • ์–ด๋–ค ๊ฐ’์„ ์ฐพ์„ ๋•Œ ๋ฐฐ์—ด์€ ์„ ํ˜• ๊ฒ€์ƒ‰ (๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜์Œ๋ถ€ํ„ฐ ํ™•์ธํ•˜๋ฉฐ ๊ฒ€์ƒ‰) ํ•ด์•ผ ํ•˜๋Š”๋ฐ, ํ•ด์‹œํ…Œ์ด๋ธ”์€ ์‚ฌ์ „์ฒ˜๋Ÿผ ์›ํ•˜๋Š” ๊ฐ’์„ ๋ฐ”๋กœ ๊ฒ€์ƒ‰ํ•  ์ˆ˜ ์žˆ๋‹ค.
    • ์„ ํ˜• ๊ฒ€์ƒ‰ ์‹œ๊ฐ„๋ณต์žก๋„ : O(N), ํ•ด์‹œ ํ…Œ์ด๋ธ” ์‹œ๊ฐ„๋ณต์žก๋„ : O(1)

IT 5๋ถ„ ์žกํ•™์‚ฌ์ „ - Array์™€ Hash Table ๋น„๊ต

โ–ผ ํ•ด์‹œํ…Œ์ด๋ธ” ์ž์„ธํžˆ ์•Œ์•„๋ณด๊ธฐ

๋”๋ณด๊ธฐ
  • ํ•ด์‹œํ…Œ์ด๋ธ”์—๋Š” ํ•ด์‹œ ํ•จ์ˆ˜๋ผ๋Š” ๊ฒƒ์ด ์žˆ์–ด์„œ key๋ฅผ ํŠน์ • Index๋กœ ๋ณ€ํ™˜ ํ•ด์ค€๋‹ค.
  • ํ•ด์‹œ ์ถฉ๋Œ : ๋ณ€ํ™˜ ๋œ Index์˜ ๊ฐ’์ด ๊ฒน์น  ๊ฒฝ์šฐ๋ฅผ ๋งํ•œ๋‹ค.
    • ์ด ๊ฒฝ์šฐ ์—ฌ๋Ÿฌ๊ฐ€์ง€ ํ•ด๊ฒฐ๋ฐฉ๋ฒ•์ด ์žˆ๋Š”๋ฐ 2๊ฐ€์ง€ ์ •๋„๋งŒ ์†Œ๊ฐœํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.
      • ๋จผ์ € ๋ณ€ํ™˜๋œ key์˜ ๋ฒˆํ˜ธ๋ฅผ ํ•ด๋‹น Index์— ๋ถ€์—ฌํ•˜๊ณ , ๊ฒน์น˜๋Š” key๋ฅผ ๋‹ค์Œ Index์— ๋ถ€์—ฌํ•˜๊ธฐ
      • ๊ฒน์น˜๋Š” Index์— ๋˜ ๋‹ค๋ฅธ ๋ฐฐ์—ด์„ ๋„ฃ์–ด์„œ ํ•ด๊ฒฐํ•˜๊ธฐ
    • ์ถฉ๋Œ์ด ์ผ์–ด๋‚˜๋Š” ๊ฒฝ์šฐ์—๋Š” ์‚ฌ์‹ค ์‹œ๊ฐ„๋ณต์žก๋„๊ฐ€ O(1)์€ ์•„๋‹ˆ๋‹ค.

 

  • ํด๋ฆฐ์ฝ”๋“œ
    • ์˜๋ฏธ ์žˆ๋Š” ๋ณ€์ˆ˜, ํ•จ์ˆ˜ ์ด๋ฆ„์„ ์ ์ ˆํžˆ ์‚ฌ์šฉํ•˜๊ธฐ
    • ํ•จ์ˆ˜์ด๋ฆ„์€ ๋™์‚ฌ๋กœ ์ž‘์„ฑํ•˜๊ธฐ (ex. userData < loadUserData)
    • ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ๋„ˆ๋ฌด ๋งŽ์ด ์“ฐ์ง€ ๋ง์ž (๋งŽ์„ ๊ฒฝ์šฐ Configuration object ๋ฐฉ์‹์œผ๋กœ ์‚ฌ์šฉ๊ฐ€๋Šฅ)
    • Boolean ๊ฐ’์„ ์ธ์ž๋กœ ๋ณด๋‚ด์ง€ ๋ง์ž (true / false์ผ ๊ฒฝ์šฐ ๋”ฐ๋กœ ์ž‘์„ฑํ•˜๋ฉด ํ•จ์ˆ˜๊ฐ€ 2๊ฐ€์ง€ ์ผ์„ ํ•ด์•ผ ํ•œ๋‹ค.)
    •  ์ถ•์•ฝ์–ด๋ฅผ ์“ฐ์ง€ ๋ง์ž (๋‹ค๋ฅธ ์‚ฌ๋žŒ์ด ์•Œ์•„๋ณด๊ธฐ ์‰ฝ๊ฒŒ ์ž‘์„ฑ)

 

 

 

โœ๐Ÿป ์˜ค๋Š˜ ์ฝ์€ ์†Œ๊ฐ์€? ๋– ์˜ค๋ฅด๋Š” ์ƒ๊ฐ์„ ๊ฐ€๋ณ๊ฒŒ ์ ์–ด๋ณด์„ธ์š”.


์˜ค๋Š˜ ๋‚ด์šฉ ์ค‘์—๋Š” ์ฑ…์œผ๋กœ ๋ณด๊ณ  ์ดํ•ดํ•˜๊ธฐ์—๋Š” ์–ด๋ ค์šด ๊ฐœ๋…์ด ๋งŽ์•„์„œ ์ดํ•ดํ•˜๋Š” ๋ฐ ์‹œ๊ฐ„์ด ๋งŽ์ด ๊ฑธ๋ ธ๋‹ค.

๊ทธ๋ž˜๋„ ์ž˜ ์ดํ•ด๊ฐ€ ๋˜์ง€ ์•Š์•„์„œ ์ด ์ฑ…์˜ ์›๋ณธ?์ด๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๋Š” ์œ ํŠœ๋ธŒ ์˜์ƒ์„ ๋ดค๋”๋‹ˆ ์ •๋ง ์‰ฝ๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค.  ํ™•์‹คํžˆ ๊ธ€ < ๊ทธ๋ฆผ < ์˜์ƒ ์ˆœ์œผ๋กœ ์ดํ•ด๊ฐ€ ์ž˜ ๋˜๋Š” ๊ฒƒ ๊ฐ™๋‹ค๊ณ  ๋Š๊ผˆ๊ณ  ์•ž์œผ๋กœ ๋ธ”๋กœ๊ทธ์— ๊ฐœ๋…์„ ์ •๋ฆฌํ•  ๋•Œ ๊ธ€๋กœ๋งŒ ์ •๋ฆฌํ•˜์ง€ ๋ง๊ณ  ๋‹ค๋ฅธ ์ž๋ฃŒ๋“ค๋„ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜์—ฌ ์ •๋ฆฌํ•ด์•ผ๊ฒ ๋‹ค๋Š” ์ƒ๊ฐ์ด ๋“ค์—ˆ๋‹ค.

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

 

 

๐Ÿ‘€ ๊ถ๊ธˆํ•œ ๋‚ด์šฉ์ด ์žˆ๊ฑฐ๋‚˜, ์ž˜ ์ดํ•ด๋˜์ง€ ์•Š๋Š” ๋‚ด์šฉ์ด ์žˆ๋‹ค๋ฉด ์ ์–ด๋ณด์„ธ์š”.


3๊ฐ€์ง€์˜ ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ์ž˜ ์ดํ•ด๊ฐ€ ๋˜์ง€ ์•Š์•„์„œ ๋‹ค๋ฅธ ์ž๋ฃŒ๋“ค์„ ์ฐพ์•„๋ณด๋‹ค๊ฐ€ ๋‹ˆ์ฝœ๋ผ์Šค๊ฐ€ ์ž˜ ์„ค๋ช…ํ•ด ๋‘”  ์˜์ƒ์„ ๋ฐœ๊ฒฌํ•ด์„œ ์ฒจ๋ถ€ํ•ด ๋‘์—ˆ๋‹ค.

- ์•Œ๊ณ ๋ฆฌ์ฆ˜ & ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ Sort

 

๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€