Skip to content

๐Ÿ“Ÿ์ž๋ฃŒ๊ตฌ์กฐ์™€ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ JavaScript ์ฝ”๋“œ๋กœ ๊ตฌํ˜„ํ•ด๋ณธ ๋ ˆํฌ

Notifications You must be signed in to change notification settings

jong-k/js-algo-udemy

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

JavaScript ์•Œ๊ณ ๋ฆฌ์ฆ˜ & ์ž๋ฃŒ๊ตฌ์กฐ

์œ ๋ฐ๋ฏธ ๊ฐ•์˜ ๋ฅผ ๋“ค์œผ๋ฉฐ ๋งŒ๋“  ๊ณต๋ถ€ ์ž๋ฃŒ

๋ฐฑ์ค€, ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ๋ฌธ์ œ๋ฅผ ํ’€๊ณ  ๋ธ”๋กœ๊ทธ์— ๊ธฐ๋ก์„ ๋‚จ๊น€ (1์ผ 1solve 2022.04.17~ )

๋ชฉ์ฐจ

1. Intro

  • Big-O ํ‘œ๊ธฐ๋ฒ•
  • ์‹œ๊ฐ„ ๋ณต์žก๋„์™€ ๊ณต๊ฐ„ ๋ณต์žก๋„
  • ๊ฐ„๋‹จํ•œ ๋ฌธ์ œ ํ•ด๊ฒฐ ํŒจํ„ด ์†Œ๊ฐœ
    • sliding window, two pointer ...

2. ์žฌ๊ท€ (Recursion)

  • base case
  • ์žฌ๊ท€ ํ•จ์ˆ˜ ํŒจํ„ด
  • ์ž์ฃผ ๋ฐœ์ƒํ•˜๋Š” ์—๋Ÿฌ

3. ํƒ์ƒ‰ ์•Œ๊ณ ๋ฆฌ์ฆ˜

  • ์ด๋ถ„ ํƒ์ƒ‰ : O(N)
  • ์„ ํ˜• ํƒ์ƒ‰ : O(logN)

4. ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜

  • ๊ธฐ๋ณธ ์ •๋ ฌ (๋น„ํšจ์œจ์  - O(N^2))
    • ๋ฒ„๋ธ”
    • ์„ ํƒ
    • ์‚ฝ์ž…
  • ์‹ฌํ™” ์ •๋ ฌ (ํšจ์œจ์  - O(N logN))
    • ํ•ฉ๋ณ‘
    • ํ€ต
    • ๊ธฐ์ˆ˜ (Radix Sort)

5. ์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ (Linked List)

  • ๋ฐฐ์—ด์— ๋น„ํ•ด ์‚ฝ์ž…, ์ œ๊ฑฐ๊ฐ€ ๋น ๋ฆ„
  • ๋‹จ์ผ ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ (Single Linked List)
    • Head์—์„œ Tail๊นŒ์ง€ ํ•œ ๋ฐฉํ–ฅ์œผ๋กœ๋งŒ ํƒ์ƒ‰ ๊ฐ€๋Šฅ
  • ์ด์ค‘ ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ (Double Lnked List)
    • ์–‘๋ฐฉํ–ฅ ํƒ์ƒ‰ ๊ฐ€๋Šฅ

6. ์Šคํƒ & ํ

  • ๋ฐฐ์—ด ๋Œ€์‹  ๋‹จ์ผ ์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ๋กœ ์ง์ ‘ ๊ตฌํ˜„ํ•˜๋ฉด ์‹œ๊ฐ„ ๋ณต์žก๋„๊ฐ€ ํ›จ์”ฌ ์œ ๋ฆฌ
    • ์‚ฝ์ž… : O(1)
    • ์ œ๊ฑฐ : O(1)
    • ํƒ์ƒ‰ : O(N)
    • ์ ‘๊ทผ : O(N)
    • ๋ฐฐ์—ด์— ๋น„ํ•ด ์‚ฝ์ž…, ์ œ๊ฑฐ๊ฐ€ ๋น ๋ฅด๊ณ  ํƒ์ƒ‰, ์ ‘๊ทผ์€ ๋Š๋ฆผ
  • ์Šคํƒ : ํ›„์ž…์„ ์ถœ(LIFO)
  • ํ : ์„ ์ž… ์„ ์ถœ(FIFO)

7. ํŠธ๋ฆฌ

  • ์ผ๋ฐ˜ ํŠธ๋ฆฌ, ์ด์ง„ ํŠธ๋ฆฌ, ์ด์ง„ ํƒ์ƒ‰ ํŠธ๋ฆฌ ๋“ฑ์˜ ์ข…๋ฅ˜๊ฐ€ ์žˆ์Œ

    • ์ด์ง„ ํƒ์ƒ‰ ํŠธ๋ฆฌ(Binary Search Tree) ๋ฅผ ๊ฐ€์žฅ ๋งŽ์ด ์”€
  • ๋น„์„ ํ˜• ์ž๋ฃŒ๊ตฌ์กฐ (๋ฆฌ์ŠคํŠธ : ์„ ํ˜• ์ž๋ฃŒ ๊ตฌ์กฐ)

  • ์ด์ง„ ํƒ์ƒ‰ ํŠธ๋ฆฌ

    • ๊ฐ’๋“ค์€ ๋ชจ๋‘ ์œ ์ผํ•œ ๊ฐ’(unique)
    • ๋ถ€๋ชจ ๋…ธ๋“œ์˜ ์™ผ์ชฝ ์ž์‹ ๋…ธ๋“œ๋Š” ๋ถ€๋ชจ ๋…ธ๋“œ๋ณด๋‹ค ์ž‘๊ณ ,
    • ์˜ค๋ฅธ์ชฝ ๋‚˜์‹ ๋…ธ๋“œ๋Š” ๋ถ€๋ชจ ๋…ธ๋“œ๋ณด๋‹ค ํฌ๋‹ค
  • ํŠธ๋ฆฌ์˜ ๋ชจ๋“  ๋…ธ๋“œ๋ฅผ 1๋ฒˆ์”ฉ ๋ฐฉ๋ฌธํ•˜๋Š” ๋ฐฉ๋ฒ• 2๊ฐ€์ง€

    • BFS(Breadth First Search) : ๋„ˆ๋น„ ์šฐ์„  ํƒ์ƒ‰
      • ๋™์ผํ•œ depth์˜ ๋…ธ๋“œ๋ฅผ ์ „๋ถ€ ๋ฐฉ๋ฌธํ•˜๊ณ  ๋‚˜์„œ์•ผ ๋‹ค์Œ depth๋กœ ๋„˜์–ด๊ฐ
    • DFS(Depth First Search) : ๊นŠ์ด ์šฐ์„  ํƒ์ƒ‰
      • leaf๊นŒ์ง€ ์ญ‰๋‚ด๋ ค๊ฐ”๋‹ค๊ฐ€ sibling์ด ์žˆ๋˜ ๋…ธ๋“œ์˜ ๋‹ค์Œ sibling์„ ํƒ์ƒ‰ํ•˜๋ฉฐ ๋ฐ˜๋ณต
  • DFS 3๊ฐ€์ง€ ๋ฐฉ๋ฒ•

    • ์ „์œ„ ํƒ์ƒ‰ (pre order) : ๋ฃจํŠธ ๋…ธ๋“œ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•ด์„œ ์ œ์ผ ์™ผ์ชฝ์„ ๋จผ์ € ๋ฐฉ๋ฌธ
    • ํ›„์œ„ ํƒ์ƒ‰ (post order) : ๋งจ ์™ผ์ชฝ ๋ฆฌํ”„ ๋…ธ๋“œ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•ด์„œ ์œ„๋กœ ์˜ฌ๋ผ๊ฐ€๋Š”๋ฐ, ์šฐ์ธก ์ž์‹๋…ธ๋“œ๊ฐ€ ์žˆ์œผ๋ฉด ๋ฐฉ๋ฌธ ํ›„ ๋ถ€๋ชจ ๋…ธ๋“œ๋ฅผ ๋ฐฉ๋ฌธ
    • ์ค‘์œ„ ํƒ์ƒ‰ (in order) : ๋งจ ์™ผ์ชฝ ๋ฆฌํ”„ ๋…ธ๋“œ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•ด์„œ ์œ„๋กœ ์˜ฌ๋ผ๊ฐ€๋Š”๋ฐ, ๋ถ€๋ชจ ๋…ธ๋“œ ๋ฐฉ๋ฌธ ํ›„ ์šฐ์ธก ์ž์‹๋…ธ๋“œ ๋ฐฉ๋ฌธ

8. ์ด์ง„ ํž™

  • ํž™ = ์ด์ง„ ํŠธ๋ฆฌ์˜ ์ผ์ข…

  • ์šฐ์„ ์ˆœ์œ„ ํ๋ฅผ ๊ตฌํ˜„ํ•˜๋Š”๋ฐ ์“ฐ์ธ๋‹ค

  • ์ด์ง„ ํƒ์ƒ‰ ํŠธ๋ฆฌ์™€ ๋น„์Šทํ•˜๊ธฐ๋„ ํ•˜๋ฉฐ 2๊ฐ€์ง€ ํž™์ด ์กด์žฌ

    • ์ตœ๋Œ€ ํž™ : ๋ถ€๋ชจ ๋…ธ๋“œ๋Š” ์–ธ์ œ๋‚˜ ์ž์‹ ๋…ธ๋“œ๋ณด๋‹ค ํฌ๋‹ค
    • ์ตœ์†Œ ํž™ : ๋ถ€๋ชจ ๋…ธ๋“œ๋Š” ์–ธ์ œ๋‚˜ ์ž์‹ ๋…ธ๋“œ๋ณด๋‹ค ์ž‘๋‹ค
  • ์‹œ๊ฐ„ ๋ณต์žก๋„

  • ์‚ฝ์ž… : O(logN)

  • ์‚ญ์ œ : O(logN)

  • ํƒ์ƒ‰ : O(N)

  • ํƒ์ƒ‰์€ ์ด์ง„ ํƒ์ƒ‰ ํŠธ๋ฆฌ๊ฐ€ ๋” ๋น ๋ฅด๋‹ค

9. ์šฐ์„ ์ˆœ์œ„ ํ

  • ์ตœ์†Œ ํž™์„ ์‚ฌ์šฉํ•ด ๊ตฌํ˜„ํ•˜๋ฉฐ, ํž™์˜ ๊ฐ ์š”์†Œ๋Š” ์šฐ์„ ์ˆœ์œ„๋ฅผ ๊ฐ€์ง„๋‹ค.
  • ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋น ๋ฅธ ๋…ธ๋“œ๊ฐ€ ๋ฃจํŠธ ๋…ธ๋“œ๊ฐ€ ๋œ๋‹ค.
  • ํ์ด๊ธฐ ๋•Œ๋ฌธ์— ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๊ฐ€์žฅ ๋น ๋ฅธ pop ๋˜๋Š” ๋…ธ๋“œ๋Š” ๋ฃจํŠธ ๋…ธ๋“œ์ด๋‹ค.

10. ํ•ด์‹œ ํ…Œ์ด๋ธ”

  • ํ•ด์‹œ ๋งต์ด๋ผ๊ณ ๋„ ๋ถˆ๋ฆผ
  • key : value pair ํ˜•ํƒœ๋กœ ์ €์žฅ
  • ์ˆœ์„œ(์ธ๋ฑ์Šค)๊ฐ€ ์—†์Œ
  • ๋ฐฐ์—ด๊ณผ ๋‹ฌ๋ฆฌ ํƒ์ƒ‰, ์ถ”๊ฐ€, ์ œ๊ฑฐ๊ฐ€ ๋งค์šฐ ๋น ๋ฆ„ (์ƒ์ˆ˜์‹œ๊ฐ„์— ์ฒ˜๋ฆฌ ๊ฐ€๋Šฅ)

11. ๊ทธ๋ž˜ํ”„

  • ์ •์ (vertex)๊ณผ 2๊ฐœ์˜ ์ •์ ์„ ์—ฐ๊ฒฐํ•˜๋Š” ๊ฐ„์„ (edge)์œผ๋กœ ๊ตฌ์„ฑ๋œ ์ž๋ฃŒ๊ตฌ์กฐ
    • ๊ฐ„์„ ์— ๋ฐฉํ–ฅ์ด ์กด์žฌํ•˜๋ฉด ๋ฐฉํ–ฅ ๊ทธ๋ž˜ํ”„
    • ๋ฐฉํ–ฅ์ด ์—†์œผ๋ฉด ๋ฌด๋ฐฉํ–ฅ ๊ทธ๋ž˜ํ”„
  • ๊ฐ„์„ ์€ ์ˆซ์ž๊ฐ’(๊ฐ€์ค‘์น˜)์„ ๊ฐ€์งˆ ์ˆ˜๋„ ์žˆ๋‹ค
    • ๊ฐ€์ค‘ ๊ทธ๋ž˜ํ”„
    • ๋น„๊ฐ€์ค‘ ๊ทธ๋ž˜ํ”„
  • ๊ทธ๋ž˜ํ”„ ํ‘œํ˜„๋ฐฉ๋ฒ•
    • ์ธ์ ‘ ๋ฆฌ์ŠคํŠธ(Adjacency List) : ๊ฐ ์ •์ ์— ์—ฐ๊ฒฐ๋œ ์ •์ ์„ 2์ฐจ์› ๋ฐฐ์—ด ํ˜•ํƒœ๋กœ ํ‘œ์‹œ
      • ์ •์ ์ด ์ˆซ์ž๊ฐ€ ์•„๋‹Œ, ๋ฌธ์ž์—ด์ด๋ฉด ํ•ด์‹œ ํ…Œ์ด๋ธ”๋กœ ํ‘œํ˜„
    • ์ธ์ ‘ ํ–‰๋ ฌ(Adjacency Matrix) : boolean ๊ธฐ๋ฐ˜์œผ๋กœ ์—ฐ๊ฒฐ ๊ด€๊ณ„๋ฅผ 2์ฐจ์› ๋ฐฐ์—ด ํ˜•ํƒœ๋กœ ํ‘œ์‹œ
      • ์Šคํ”„๋ ˆ๋“œ ์‹œํŠธ
  • ์‹œ๊ฐ„ ๋ณต์žก๋„ ๋น„๊ต
    • ์ธ์ ‘ ๋ฆฌ์ŠคํŠธ : ๋ฉ”๋ชจ๋ฆฌ ๋œ ์ฐจ์ง€ํ•ด์„œ ์ฃผ๋กœ ์“ฐ์ž„, ๋น ๋ฅด๊ฒŒ ๋ชจ๋“  ๊ฐ„์„  ์ˆœํšŒ ๊ฐ€๋Šฅ
    • ์ธ์ ‘ ํ–‰๋ ฌ : ํŠน์ • ๊ฐ„์„  ์ฐพ๋Š” ๊ฒƒ์€ ๋น ๋ฆ„, ๋ฐ€์ง‘ํ•œ ๋ฐ์ดํ„ฐ ๋‹ค๋ฃฐ ๋•Œ๋งŒ ์ข‹์Œ

About

๐Ÿ“Ÿ์ž๋ฃŒ๊ตฌ์กฐ์™€ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ JavaScript ์ฝ”๋“œ๋กœ ๊ตฌํ˜„ํ•ด๋ณธ ๋ ˆํฌ

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published