๊ฐœ๋ฐœ ๊ณต๋ถ€/๋ฐ๋ธŒ์ฝ”์Šค TIL

[ํด๋ผ์šฐ๋”ฉ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ์—”์ง€๋‹ˆ์–ด๋ง TIL] 240408 - 240411 ์ž๋ฃŒ๊ตฌ์กฐ/์•Œ๊ณ ๋ฆฌ์ฆ˜ ํ•™์Šต

๊ฐ€์šค์ด 2024. 4. 12. 00:14

Intro


๋ฐ๋ธŒ์ฝ”์Šค firebase ๊ฐ•์˜๋„ ๋ฒ…์ฐผ๋Š”๋ฐ ์ž๋ฃŒ๊ตฌ์กฐ/์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ฐ•์˜๊นŒ์ง€ ์žˆ์–ด์„œ ๋“ฃ๋А๋ผ ์กฐ๊ธˆ ํž˜๋“ค์—ˆ๋‹ค.

์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ๋ฅผ ํ’€๊ณ  ํ•ด์„ค ๊ฐ•์˜๊นŒ์ง€ ๋“ค์–ด์•ผ ํ–ˆ๋Š”๋ฐ ๋ฌธ์ œ๋ฅผ ํ‘ธ๋Š” ๋ฐ๋„ ์‹œ๊ฐ„์ด ์˜ค๋ž˜ ๊ฑธ๋ฆฌ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

์‹œ๊ฐ„ ์ƒ ์–ด๋ ค์šด ๋ฌธ์ œ๋“ค์€ ์กฐ๊ธˆ๋งŒ ๊ณ ๋ฏผํ•˜๊ณ  ํ’€์ด๋ฅผ ๋ณด๊ณค ํ–ˆ๋‹ค.

์—ฌ์œ ๋กœ์šธ ๋•Œ ๋‹ค์‹œ ํ’€์–ด๋ด์•ผ์ง€! 

 

 

 

์˜ค๋Š˜ ํ•™์Šตํ•œ ๋‚ด์šฉ


์Šคํƒ (Stack)

: LIFO (Last In First Out)

 

ํ (Queue)

: FIFO (First In First Out)

  • shift ํ•จ์ˆ˜ ์‚ฌ์šฉ์€ ์ง€์–‘
  • front, rear, index ๋ณ€์ˆ˜๋ฅผ ์ง€์ •ํ•ด์„œ ๋ณ€์ˆ˜๋ฅผ ๊บผ๋‚ด๋ฉด front++ ์ด๋Ÿฐ ์‹์œผ๋กœ ๊ตฌํ˜„ํ•˜๋ฉด ๋จ

 

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

: ์ž…๋ ฅ๋ฐ›์€ ๊ฐ’์„ ํŠน์ • ๋ฒ”์œ„ ๋‚ด ์ˆซ์ž๋กœ ๋ณ€๊ฒฝํ•˜๋Š” ํ•จ์ˆ˜

ex. “gender” ⇒ 172461724 …

 

 

โš ๏ธ ๋งŒ์•ฝ ํ•ด์‹œ ํ•จ์ˆ˜์˜ ๊ฒฐ๊ณผ๊ฐ€ ๋™์ผํ•˜์—ฌ ๊ฒน์นœ๋‹ค๋ฉด??

  • ์„ ํ˜• ํƒ์‚ฌ๋ฒ•
    • ํ•œ ์˜์—ญ์— ๋ชฐ๋ฆฌ๋Š” ๋ฌธ์ œ์ ์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค.
    • ์ถฉ๋Œ์ด ๋ฐœ์ƒํ•˜๋ฉด ์˜†์œผ๋กœ ํ•œ ์นธ ์ด๋™
  • ์ œ๊ณฑ ํƒ์‚ฌ๋ฒ•
    • ์ถฉ๋Œ์ด ๋ฐœ์ƒํ•˜๋ฉด ์ถฉ๋Œ์ด ๋ฐœ์ƒํ•œ ํšŸ์ˆ˜์˜ ์ œ๊ณฑ๋งŒํผ ์˜†์œผ๋กœ ์ด๋™
  • ์ด์ค‘ ํ•ด์‹ฑ
    • ์ถฉ๋Œ์ด ๋ฐœ์ƒํ•˜๋ฉด ๋‹ค๋ฅธ ํ•ด์‹œ ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•˜๊ธฐ
  • ๋ถ„๋ฆฌ ์—ฐ๊ฒฐ๋ฒ•
    • ๋ฒ„ํ‚ท์˜ ๊ฐ’์„ ์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ๋กœ ์‚ฌ์šฉํ•˜์—ฌ ์ถฉ๋Œ์ด ๋ฐœ์ƒํ•˜๋ฉด ๋ฆฌ์ŠคํŠธ์— ๊ฐ’์„ ์ถ”๊ฐ€

ํ•ด์‹œ๋Š” ์ฃผ๋กœ ์ถœ์„๋ถ€ ๊ด€๋ฆฌ ๋“ฑ์— ์‚ฌ์šฉ๋จ

 

 

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ ํ•ด์‹œ ํ…Œ์ด๋ธ” ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•

 

  • Array (์ถ”์ฒœํ•˜๋Š” ๋ฐฉ์‹์€ X)
const table = []
table['key'] = 100
table['key2'] = 'hello'
console.log(table['key'])
delete table['key']

 

  • Object
const table = {}
table['key'] = 100
table['key2'] = 'hello'
delete table['key']

 

  • Map: ๋‹ค์–‘ํ•œ ํƒ€์ž…์„ ๋„ฃ์„ ์‹œ ์œ ๋ฆฌ (object๋„ key๋กœ ์“ธ ์ˆ˜ ์žˆ์Œ), ํŽธํ•œ ๋ฉ”์†Œ๋“œ์™€ ํŽธํ•œ ์ˆœํšŒ ๊ฐ€๋Šฅ
const table = new Map()
table.set('key', 100)
table.set('key2', 'hello')
table.get('key')

 

  • Set: ์ง‘ํ•ฉ ์—ฐ์‚ฐ (์ค‘๋ณต X)
const table = new Set()
table.add('key')
table.add('key2')
table.has('key')
table.clear()

 

 

๊ทธ๋ž˜ํ”„

: ์ •์ ๊ณผ ์ •์  ์‚ฌ์ด๋ฅผ ์—ฐ๊ฒฐํ•˜๋Š” ๊ฐ„์„ ์œผ๋กœ ์ด๋ฃจ์–ด์ง„ ๋น„์„ ํ˜• ์ž๋ฃŒ๊ตฌ์กฐ

 

์ •์  ์ง‘ํ•ฉ๊ณผ ๊ฐ„์„  ์ง‘ํ•ฉ์œผ๋กœ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค.

ex) ํŽ˜์ด์ง€๋žญํฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜

 

๊ทธ๋ž˜ํ”„์˜ ํŠน์ง•

  • ์ •์ ์€ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๊ฐ„์„ ์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋‹ค.
  • ํฌ๊ฒŒ ๋ฐฉํ–ฅ ๊ทธ๋ž˜ํ”„์™€ ๋ฌด๋ฐฉํ–ฅ ๊ทธ๋ž˜ํ”„๋กœ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ๋‹ค.
  • ๊ฐ„์„ ์€ ๊ฐ€์ค‘์น˜๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋‹ค.
  • ์‚ฌ์ดํด์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค.

 

๋ฌด๋ฐฉํ–ฅ ๊ทธ๋ž˜ํ”„

  • ๊ฐ„์„ ์œผ๋กœ ์ด์–ด์ง„ ์ •์ ๋ผ๋ฆฌ๋Š” ์–‘๋ฐฉํ–ฅ์œผ๋กœ ์ด๋™์ด ๊ฐ€๋Šฅํ•˜๋‹ค.
  • ํ‘œํ˜„ํ•˜๊ธฐ์— (a, b)์™€ (b, a)๋Š” ๊ฐ™์€ ๊ฐ„์„ ์œผ๋กœ ์ทจ๊ธ‰ํ•œ๋‹ค. (์–‘๋ฐฉํ–ฅ ํ†ตํ–‰ ๋„๋กœ)

 

๋ฐฉํ–ฅ ๊ทธ๋ž˜ํ”„

  • ๊ฐ„์„ ์— ๋ฐฉํ–ฅ์„ฑ์ด ์กด์žฌ ํ•จ
  • (a, b)์™€ (b, a)๋Š” ๋‹ค๋ฅธ ๊ฐ„์„œ์œผ๋กœ ์ทจ๊ธ‰ํ•œ๋‹ค.

 

์—ฐ๊ฒฐ ๊ทธ๋ž˜ํ”„

  • ๋ชจ๋“  ์ •์ ์ด ์„œ๋กœ ์ด๋™ ๊ฐ€๋Šฅํ•œ ์ƒํƒœ์ธ ๊ทธ๋ž˜ํ”„

 

๋น„์—ฐ๊ฒฐ ๊ทธ๋ž˜ํ”„

  • ํŠน์ • ์ •์ ์Œ ์‚ฌ์ด์— ๊ฐ„์„ ์ด ์กด์žฌํ•˜์ง€ ์•Š๋Š” ๊ทธ๋ž˜ํ”„

 

์™„์ „ ๊ทธ๋ž˜ํ”„

  • ๋ชจ๋“  ์ •์ ๋ผ๋ฆฌ ์—ฐ๊ฒฐ๋œ ์ƒํƒœ์ธ ๊ทธ๋ž˜ํ”„
  • ํ•œ ๊ฐ„์„ ์˜ ์ •์  ์ˆ˜ = ๋ชจ๋“  ์ •์ ์˜ ์ˆ˜ - 1

์‚ฌ์ดํด

  • ๊ทธ๋ž˜ํ”„์˜ ์ •์ ๊ณผ ๊ฐ„์„ ์˜ ๋ถ€๋ถ„ ์ง‘ํ•ฉ์—์„œ ์ˆœํ™˜์ด ๋˜๋Š” ๋ถ€๋ถ„

๊ทธ๋ž˜ํ”„ ๊ตฌํ˜„ ๋ฐฉ๋ฒ•

: ์ธ์ ‘ ํ–‰๋ ฌ์ด๋‚˜ ์ธ์ ‘ ๋ฆฌ์ŠคํŠธ ๋ฐฉ์‹ ์‚ฌ์šฉ

 

 

ํŠธ๋ฆฌ

: ๋ฐฉํ–ฅ ๊ทธ๋ž˜ํ”„์˜ ์ผ์ข…์œผ๋กœ ์ •์ ์„ ๊ฐ€๋ฆฌํ‚ค๋Š” ๊ฐ„์„ ์ด ํ•˜๋‚˜ ๋ฐ–์— ์—†๋Š” ๊ตฌ์กฐ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.

ex) ์กฐ์ง๋„, ํŒŒ์ผ ๋””๋ ‰ํ„ฐ๋ฆฌ ๊ตฌ์กฐ

 

ํŠธ๋ฆฌ์˜ ํŠน์ง•

  • ๋ฃจํŠธ ์ •์ ์„ ์ œ์™ธํ•œ ๋ชจ๋“  ์ •์ ์€ ๋ฐ˜๋“œ์‹œ ํ•˜๋‚˜์˜ ๋ถ€๋ชจ ์ •์ ์„ ๊ฐ€์ง„๋‹ค.
  • ์ •์ ์ด N๊ฐœ์ธ ํŠธ๋ฆฌ๋Š” ๋ฐ˜๋“œ์‹œ N-1๊ฐœ์˜ ๊ฐ„์„ ์„ ๊ฐ€์ง„๋‹ค.
  • ๋ฃจํŠธ์—์„œ ํŠน์ • ์ •์ ์œผ๋กœ ๊ฐ€๋Š” ๊ฒฝ๋กœ๋Š” ์œ ์ผํ•˜๋‹ค.

์ด์ง„ ํŠธ๋ฆฌ

: ๊ฐ ์ •์ ์ด ์ตœ๋Œ€ 2๊ฐœ์˜ ์ž์‹์„ ๊ฐ€์ง€๋Š” ํŠธ๋ฆฌ

  • ์ด์ง„ํŠธ๋ฆฌ
  • ์™„์ „ ์ด์ง„ํŠธ๋ฆฌ
  • ํฌํ™” ์ด์ง„ํŠธ๋ฆฌ
  • ํŽธํ–ฅํŠธ๋ฆฌ

 

์ด์ง„ ํŠธ๋ฆฌ ํŠน์ง•

  • ์ •์ ์ด N๊ฐœ์ธ ์ด์ง„ํŠธ๋ฆฌ๋Š” ์ตœ์•…์˜ ๊ฒฝ์šฐ ๋†’์ด๊ฐ€ N์ด ๋  ์ˆ˜ ์žˆ๋‹ค.
  • ์ •์ ์ด N๊ฐœ์ธ ํฌํ™” ๋˜๋Š” ์™„์ „ ์ด์ง„ ํŠธ๋ฆฌ์˜ ๋†’์ด๋Š” logN
  • ๋†’์ด๊ฐ€ h์ธ ํฌํ™” ์ด์ง„ํŠธ๋ฆฌ๋Š” 2^h-1๊ฐœ์˜ ์ •์ ์„ ๊ฐ€์ง„๋‹ค.
  • ์ผ๋ฐ˜์ ์ธ ์ด์ง„ํŠธ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ๋Š” ๋งŽ์ง€ ์•Š๋‹ค.
    • ์ด์ง„ ํƒ์ƒ‰ ํŠธ๋ฆฌ
    • ํž™
    • AVL ํŠธ๋ฆฌ
    • ๋ ˆ๋“œ ๋ธ”๋ž™ ํŠธ๋ฆฌ

ํŠธ๋ฆฌ ๊ตฌํ˜„ ๋ฐฉ๋ฒ•

: ์ธ์ ‘ ํ–‰๋ ฌ, ์ธ์ ‘ ๋ฆฌ์ŠคํŠธ๋กœ ๊ตฌํ˜„ ๊ฐ€๋Šฅ

๋ฐฐ์—ด ํ˜น์€ ์š”์†Œ์— ๋งํฌ๊ฐ€ 2๊ฐœ ์กด์žฌํ•˜๋Š” ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ๋กœ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค.

  •  

 

 

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

: FIFO์ธ ํ์™€ ๋‹ฌ๋ฆฌ ์šฐ์„  ์ˆœ์œ„๊ฐ€ ๋†’์€ ์š”์†Œ๊ฐ€ ๋จผ์ € ๋‚˜๊ฐ€๋Š” ํ

์šฐ์„ ์ˆœ์œ„ ํ๋Š” ์ž๋ฃŒ๊ตฌ์กฐ๋Š” ์•„๋‹ˆ๋ฉฐ ๋‹จ์ง€ ๊ฐœ๋…์ผ ๋ฟ์ด๋‹ค.

 

ํž™

: ์šฐ์„ ์ˆœ์œ„ ํ๋ฅผ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•ด ์ ํ•ฉํ•œ ๋ฐฉ๋ฒ•

์ด์ง„ํŠธ๋ฆฌ ํ˜•ํƒœ๋ฅผ ๊ฐ€์ง€๋ฉฐ ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋†’์€ ์š”์†Œ๊ฐ€ ๋จผ์ € ๋‚˜๊ฐ€๊ธฐ ์œ„ํ•ด ์š”์†Œ๊ฐ€ ์‚ฝ์ž…, ์‚ญ์ œ๋  ๋•Œ ๋ฐ”๋กœ ์ •๋ ฌ๋˜๋Š” ํŠน์ง•์ด ์žˆ๋‹ค.

(ํž™ ≠ ์šฐ์„ ์ˆœ์œ„ ํ)

 

ํž™์˜ ํŠน์ง•

  • ์š”์†Œ๊ฐ€ ์ถ”๊ฐ€๋  ๋•Œ ํŠธ๋ฆฌ์˜ ๊ฐ€์žฅ ๋งˆ์ง€๋ง‰ ์ •์ ์— ์œ„์น˜
  • ์ถ”๊ฐ€ ํ›„ ๋ถ€๋ชจ ์ •์ ๋ณด๋‹ค ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋†’๋‹ค๋ฉด ๋ถ€๋ชจ ์ •์ ๊ณผ ์ˆœ์„œ๋ฅผ ๋ฐ”๊พผ๋‹ค.
  • ์ด ๊ณผ์ •์„ ๋ฐ˜๋ณตํ•˜๋ฉด ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋†’์€ ์ •์ ์ด ๋ฃจํŠธ๊ฐ€ ๋œ๋‹ค.
  • ์™„์ „ ์ด์ง„ ํŠธ๋ฆฌ์˜ ๋†’์ด๋Š” logN์ด๊ธฐ์— ํž™์˜ ์š”์†Œ ์ถ”๊ฐ€ ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ O(logN) ์‹œ๊ฐ„๋ณต์žก๋„๋ฅผ ๊ฐ€์ง„๋‹ค.

 

ํž™ ์š”์†Œ ์ œ๊ฑฐ ์•Œ๊ณ ๋ฆฌ์ฆ˜

  • ์š”์†Œ ์ œ๊ฑฐ๋Š” ๋ฃจํŠธ ์ •์ ๋งŒ ๊ฐ€๋Šฅํ•˜๋‹ค.
  • ๋ฃจํŠธ ์ •์ ์ด ์ œ๊ฑฐ๋œ ํ›„ ๊ฐ€์žฅ ๋งˆ์ง€๋ง‰ ์ •์ ์ด ๋ฃจํŠธ์— ์œ„์น˜ํ•œ๋‹ค.
  • ๋ฃจํŠธ ์ •์ ์˜ ๋‘ ์ž์‹ ์ •์  ์ค‘ ๋” ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋†’์€ ์ •์ ๊ณผ ๋ฐ”๊พผ๋‹ค.
  • ๋‘ ์ž์‹ ์ •์ ์ด ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋” ๋‚ฎ์„ ๋•Œ๊นŒ์ง€ ๋ฐ˜๋ณต
  • ์™„์ „ ์ด์ง„ ํŠธ๋ฆฌ์˜ ๋†’์ด๋Š” logN์ด๊ธฐ์— ํž™์˜ ์š”์†Œ ์ œ๊ฑฐ ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ O(logN) ์‹œ๊ฐ„ ๋ณต์žก๋„์ด๋‹ค.

 

ํŠธ๋ผ์ด (Trie)

: ๋ฌธ์ž์—ด์„ ์ €์žฅํ•˜๊ณ  ํšจ์œจ์ ์œผ๋กœ ํƒ์ƒ‰ํ•˜๊ธฐ ์œ„ํ•œ ํŠธ๋ฆฌ ํ˜•ํƒœ์˜ ์ž๋ฃŒ๊ตฌ์กฐ

 

ํŠธ๋ผ์ด ํŠน์ง•

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

ํŠธ๋ผ์ด ๊ตฌ์กฐ

  • ๋ฃจํŠธ๋Š” ๋น„์–ด์žˆ๋‹ค.
  • ๊ฐ ๊ฐ„์„ ์€ ์ถ”๊ฐ€๋  ๋ฌธ์ž๋ฅผ ํ‚ค๋กœ ๊ฐ€์ง„๋‹ค.
  • ๊ฐ ์ •์ ์€ ์ด์ „ ์ •์ ์˜ ๊ฐ’ + ๊ฐ„์„ ์˜ ํ‚ค๋ฅผ ๊ฐ’์œผ๋กœ ๊ฐ€์ง„๋‹ค.
  • ํ•ด์‹œ ํ…Œ์ด๋ธ”๊ณผ ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ๋ฅผ ์ด์šฉํ•˜์—ฌ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

 

์ด์ง„ ํƒ์ƒ‰

์„ ํ˜• ํƒ์ƒ‰์€ ์ˆœ์„œ๋Œ€๋กœ ํ•˜๋‚˜์”ฉ ์ฐพ๋Š” ํƒ์ƒ‰ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๊ณ , ์ด์ง„ ํƒ์ƒ‰์€ ์ •๋ ฌ๋˜์–ด์žˆ๋Š” ์š”์†Œ๋“ค์„ ๋ฐ˜์”ฉ ์ œ์™ธํ•˜๋ฉฐ ์ฐพ๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋‹ค.

 

์ด์ง„ ํƒ์ƒ‰ ํŠน์ง•

  • ๋ฐ˜๋“œ์‹œ ์ •๋ ฌ๋˜์–ด ์žˆ์–ด์•ผ ํ•œ๋‹ค.
  • ๋ฐฐ์—ด ํ˜น์€ ์ด์ง„ ํŠธ๋ฆฌ๋ฅผ ์ด์šฉํ•˜์—ฌ ๊ตฌํ˜„ ๊ฐ€๋Šฅ
  • O(logN) ์‹œ๊ฐ„๋ณต์žก๋„ ← ๋งค์šฐ ๋น ๋ฆ„

 

์ •๋ ฌ

: ์š”์†Œ๋“ค์„ ์ผ์ •ํ•œ ์ˆœ์„œ๋Œ€๋กœ ์—ด๊ฑฐํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜

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

 

์–ด๋–ค ์ •๋ ฌ์ด ์ œ์ผ ๋น ๋ฅผ๊นŒ?

=> ์ •ํ•ด์ ธ์žˆ์ง€ ์•Š๋‹ค!

 

๋น„๊ต์‹ ์ •๋ ฌ

  • ๋ฒ„๋ธ” ์ •๋ ฌ: ์„œ๋กœ ์ธ์ ‘ํ•œ ๋‘ ์š”์†Œ๋ฅผ ๊ฒ€์‚ฌํ•˜์—ฌ ์ •๋ ฌํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜ O(n^2)
  • ์„ ํƒ ์ •๋ ฌ: ์„ ํƒํ•œ ์š”์†Œ์™€ ๊ฐ€์žฅ ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋†’์€ ์š”์†Œ๋ฅผ ๊ตํ™˜ํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜ O(n^2)
  • ์‚ฝ์ž… ์ •๋ ฌ: ์„ ํƒํ•œ ์š”์†Œ๋ฅผ ์‚ฝ์ž… ํ•  ์ˆ˜ ์žˆ๋Š” ์œ„์น˜๋ฅผ ์ฐพ์•„ ์‚ฝ์ž…ํ•˜๋Š” ๋ฐฉ์‹์˜ ์•Œ๊ณ ๋ฆฌ์ฆ˜ O(n^2)

๋ถ„์‚ฐ์‹ ์ •๋ ฌ

๋ถ„ํ•  ์ •๋ณต

: ๋ฌธ์ œ๋ฅผ ์ž‘์€ 2๊ฐœ์˜ ๋ฌธ์ œ๋กœ ๋ถ„๋ฆฌํ•˜๊ณ  ๋” ์ด์ƒ ๋ถ„๋ฆฌ๊ฐ€ ๋ถˆ๊ฐ€๋Šฅ ํ•  ๋•Œ ์ฒ˜๋ฆฌํ•œ ํ›„ ํ•ฉ์น˜๋Š” ์ „๋žต ⇒ ๋‹ค์–‘ํ•œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์— ์‘์šฉ๋จ

  • ํ•ฉ๋ณ‘ ์ •๋ ฌ: ๋ถ„ํ•  ์ •๋ณต ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ด์šฉํ•œ ์ตœ์„ ๊ณผ ์ตœ์•…์ด ๊ฐ™์€ ์•ˆ์ •์ ์ธ ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜ O(nlogn)
  • ํ€ต ์ •๋ ฌ: ๋ถ„ํ•  ์ •๋ณต ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ด์š”ํ•œ ๋งค์šฐ ๋น ๋ฅด์ง€๋งŒ ์ตœ์•…์˜ ๊ฒฝ์šฐ๊ฐ€ ์กด์žฌํ•˜๋Š” ๋ถˆ์•ˆ์ • ์ •๋ ฌ O(nlogn)
โœ… Javascript์—์„œ ์ •๋ ฌ์€ sort() ์‚ฌ์šฉ

 

์†Œ์ˆ˜ ๊ตฌํ•˜๊ธฐ

  1. 2๋ถ€ํ„ฐ N-1๊นŒ์ง€ ๋ฃจํŠธ๋ฅผ ๋Œ๋ฉฐ ๋‚˜๋ˆ ๋ณด๊ธฐ O(n)
  2. ๊ทธ ์–ด๋–ค ์†Œ์ˆ˜๋„ N์˜ ์ œ๊ณฑ๊ทผ๋ณด๋‹ค ํฐ ์ˆ˜๋กœ ๋‚˜๋ˆ ์ง€์ง€ ์•Š๋Š”๋‹ค. O(sqrt(n))
  3. ์—๋ผํ† ์Šคํ…Œ๋„ค์Šค์˜ ์ฒด: ๊ฐ€์žฅ ํšจ๊ณผ์ ์ธ ์•Œ๊ณ ๋ฆฌ์ฆ˜

 

 

๋งˆ๋ฌด๋ฆฌ


๊ฐ•์˜๋ฅผ ๋“ค์„ ๋• ์•„ํ•˜! ํ•˜๋ฉด์„œ ์ดํ•ด๊ฐ€ ์ž˜๋˜๋Š”๋ฐ ๋ง‰์ƒ ๋ฌธ์ œ๋ฅผ ํ’€์–ด๋ณด๋ คํ•˜๋ฉด ์ž˜ ์•ˆํ’€๋ฆฌ๊ณ  ๋ง‰๋ง‰ํ•œ ๊ฒƒ ๊ฐ™๋‹ค.

์—ฌ๋Ÿฌ ๋ฌธ์ œ๋ฅผ ๋งŽ์ด ํ’€์–ด๋ณด๋ฉด์„œ ์ต์ˆ™ํ•ด์ ธ์•ผ๊ฒ ๋‹ค.