๐Ÿ˜Ž ๊ณต๋ถ€ํ•˜๋Š” ์ง•์ง•์•ŒํŒŒ์นด๋Š” ์ฒ˜์Œ์ด์ง€?

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

๐Ÿ‘ฉ‍๐Ÿ’ป ์ปดํ“จํ„ฐ ๊ตฌ์กฐ/Algorithm

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

์ง•์ง•์•ŒํŒŒ์นด 2022. 9. 28. 16:58
728x90
๋ฐ˜์‘ํ˜•

220928 ์ž‘์„ฑ

<๋ณธ ๋ธ”๋กœ๊ทธ๋Š” "๊ฐ€์žฅ ์‰ฌ์šด ๋…ํ•™_์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ฒซ๊ฑธ์ŒํŽธ python ํŽธ"์˜ ์„œ์ ๋ฅผ ์ฐธ๊ณ ํ•ด์„œ ๊ณต๋ถ€ํ•˜๋ฉฐ ์ž‘์„ฑํ•˜์˜€์Šต๋‹ˆ๋‹ค>

 

 

 

1๏ธโƒฃ ๋ณต์žก๋„

: ๋ง ๊ทธ๋ž˜๋กœ ๊ณ„์‚ฐ์˜ ๋ณต์žก๋„

  • ์‹œ๊ฐ„ ๋ณต์žก๋„ : ์ฒ˜๋ฆฌ์— ์–ผ๋งˆ๋‚˜ ๋งŽ์€ ์‹œ๊ฐ„์ด ๊ฑธ๋ฆฌ๋Š”์ง€
  • ๊ณต๊ฐ„ ๋ณต์žก๋„ : ๋ฉ”๋ชจ๋ฆฌ ๋“ฑ์˜ ๊ธฐ์–ต ์šฉ๋Ÿ‰์„ ์–ผ๋งˆ๋‚˜ ํ•„์š”๋กœ ํ•˜๋Š”์ง€

 

2๏ธโƒฃ ๋ณต์žก๋„ ์ž‘์„ฑ๋ฒ•

: ์ „์ฒด ๋ณต์žก๋„์— ํฐ ์˜ํ–ฅ์„ ๊ธฐ์น˜์ง€ ์•Š๋Š” ๋ถ€๋ถ„์„ ๋ฌด์‹œํ•˜๊ณ  ๋ณต์žก๋„๋ฅผ ์ž‘์„ฑ

  • ๋น…์˜ค ํ‘œ๊ธฐ๋ฒ• O
  • ์ž…๋ ฅ ํฌ๊ธฐ n์˜ ๋ณ€ํ™”์— ๋”ฐ๋ผ ์‹œ๊ฐ„ ๋ณต์žก๋„๊ฐ€ ๋‹ฌ๋ผ์ง
์ฒ˜๋ฆฌ ์‹œ๊ฐ„ ์‹œ๊ฐ„ ๋ณต์žก๋„ ์˜ˆ
์งง๋‹ค


.
.
.
.
.


๊ธธ๋‹ค
O(1) ๋ฆฌ์ŠคํŠธ ์ ‘๊ทผ
O(logn) ์ด์ง„ ๊ฒ€์ƒ‰
O(n) ์„ ํ˜• ๊ฒ€์ƒ‰
O(nlogn) ๋ณ‘ํ•ฉ ์ •๋ ฌ
O(n^2) ์„ ํƒ ์ •๋ ฌ, ์‚ฝ์ž… ์ •๋ ฌ
O(n^3) ํ–‰๋ ฌ ๋ฌธ์ œ
O(2^n) ๋ฐฐ๋‚ญ ๋ฌธ์ œ
O(n!) ์™ธํŒ์› ๋ฌธ์ œ

 

3๏ธโƒฃ ์ตœ์•… ์‹œ๊ฐ„ ๋ณต์žก๋„ & ํ‰๊ท  ์‹œ๊ฐ„ ๋ณต์žก๋„

๐Ÿค ์ตœ์•… ์‹œ๊ฐ„ ๋ณต์žก๋„

: ๊ฐ€์žฅ ์‹œ๊ฐ„์ด ์˜ค๋ž˜ ๊ฑธ๋ฆฌ๋Š” ๋ฐ์ดํ„ฐ์˜ ๋ณต์žก๋„

 

๐Ÿค ํ‰๊ท  ์‹œ๊ฐ„ ๋ณต์žก๋„

: ๋‹ค์–‘ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ณ ๋ คํ•˜์—ฌ ํ‰๊ท ์ ์œผ๋กœ ์–ด๋Š ์ •๋„์˜ ๋ณต์žก๋„๊ฐ€ ๋ ์ง€๋ฅผ ํŒ๋‹จํ•˜๋Š” ์ง€ํ‘œ

 

 

4๏ธโƒฃ ์ž๋ฃŒ๊ตฌ์กฐ

๐Ÿค ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ

: ํ•˜๋‚˜์˜ ์š”์†Œ์— ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•  ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ, ๋‹ค์Œ ์š”์†Œ์˜ ์ฃผ์†Œ(์œ„์น˜)๋ฅผ ๊ฐ–๋Š”๋‹ค

: ์•ž์—์„œ๋ถ€ํ„ฐ ์ˆœ์„œ๋Œ€๋กœ ์ฒ˜๋ฆฌํ•˜๊ฑฐ๋‚˜, ๋ฐ์ดํ„ฐ์˜ ์ถ”๊ฐ€ ์‚ญ์ œ๊ฐ€ ์ž์ฃผ ๋ฐœ์ƒํ•  ๊ฒฝ์šฐ์—๋Š” ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ ์„ ํ˜ธ

: (์ž„์˜์˜ ์œ„์น˜ ๋ฐ์ดํ„ฐ ์ง์ ‘ ์ ‘๊ทผํ•ด ์ฝ๊ฑฐ๋‚˜, ๊ฐฑ์‹ ์ด ๋งŽ์œผ๋ฉด ๋ฆฌ์ŠคํŠธ ์„ ํ˜ธ)

https://hwan1402.tistory.com/75

  • ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ ์‚ฝ์ž…
    • ๊ธฐ์กด ๋ฆฌ์ŠคํŠธ
      • ์‚ฝ์ž… ์œ„์น˜ ์ดํ›„์˜ ๋ฐ์ดํ„ฐ๋ฅผ ํ•˜๋‚˜์”ฉ ๋’ค๋กœ ์›€์ง์ด๊ธฐ
      • n๊ฐœ์˜ ์š”์†Œ๊ฐ€ ์ €์žฅ๋œ ๋ฆฌ์ŠคํŠธ์— ์ƒˆ๋กœ์šด ์š”์†Œ๋ฅผ ์‚ฝ์ž…ํ•  ๋•Œ๋Š” ์ตœ๋Œ€ n๊ฐœ์˜ ์š”์†Ÿ๊ฐ’์„ ์ด๋™์‹œ์ผœ์•ผ ํ•จ
      • ๋ฆฌ์ŠคํŠธ์˜ ์‚ฝ์ž… ๋ณต์žก๋„๋Š” O(n)
    • ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ
      • ์‚ฝ์ž…ํ•  ์œ„์น˜ ์•ž์˜ ์š”์†Œ๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๋Š” ๋‹ค์Œ ์š”์†Œ์˜ ์ฃผ์†Œ๋ฅผ A๋ผ ํ•˜๋ฉด, ์‚ฝ์ž…ํ•  ์š”์†Œ์˜ ๋‹ค์Œ ์š”์†Œ ์ฃผ์†Œ๋กœ์„œ A ์„ค์ •
      • ์•ž์˜ ์š”์†Œ๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๋Š” ๋‹ค์Œ ์š”์†Œ์˜ ์ฃผ์†Œ๋ฅผ ์‚ฝ์ž…ํ•œ ์š”์†Œ์˜ ์ฃผ์†Œ๋กœ ๋ณ€๊ฒฝ
      • ์š”์†Œ๊ฐ€ ๋งŽ์•„์ ธ๋„ ์š”์†Ÿ๊ฐ’์˜ ์ด๋™์ด ์—†์œผ๋ฏ€๋กœ ์ผ์ • ์‹œ๊ฐ„์— ์ฒ˜๋ฆฌ ๊ฐ€๋Šฅ
      • ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ์˜ ์‚ฝ์ž… ๋ณต์žก๋„๋Š” O(1)
  • ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ ์‚ญ์ œ
    • ๊ธฐ์กด ๋ฆฌ์ŠคํŠธ
      • ์š”์†Œ๋ฅผ ์‚ญ์ œํ•˜๋ฉด ์‚ญ์ œํ•œ ์œ„์น˜๊ฐ€ ๋น„๋ฏ€๋กœ, ๊ทธ๋ณด๋‹ค ๋’ค์— ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ํ•˜๋‚˜์”ฉ ์•ž์œผ๋กœ ์›€์ง์ด๊ธฐ
      • ๋ฆฌ์ŠคํŠธ์˜ ์‚ญ์ œ ๋ณต์žก๋„๋Š” O(n)
    • ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ
      • ์‚ญ์ œํ•˜๋Š” ์š”์†Œ๊ฐ€ ๊ฐ€์ง€๋Š” ๋‹ค์Œ ์š”์†Œ์˜ ์ฃผ์†Œ๋ฅผ ์ด์ „ ์š”์†Œ๊ฐ€ ๊ฐ€์ง€๋Š” ๋‹ค์Œ ์š”์†Œ์˜ ์ฃผ์†Œ๋กœ ์„ค์ •ใ…Ž\
      • ์š”์†Œ๋ฅผ ์ด๋™ํ•  ํ•„์š”๊ฐ€ ์—†์Œ
      • ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ์˜ ์‚ญ์ œ ๋ณต์žก๋„๋Š” O(1)
  • ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ ์ฝ๊ธฐ
    • ๊ธฐ์กด ๋ฆฌ์ŠคํŠธ
      • ๋งจ ์•ž๋ถ€ํ„ฐ n๋ฒˆ์งธ ์š”์†Œ๋ฅผ ์ฝ์„ ๋•Œ ์š”์†Œ ๋ฒˆํ˜ธ๋ฅผ ์ง€์ •ํ•ด ์ฝ๋Š”๋‹ค
      • ์ธ๋ฑ์Šค๋ฅผ ์ง€์ •ํ•œ ์ฝ๊ธฐ์˜ ๋ณต์žก๋„
      • ๋ฆฌ์ŠคํŠธ์˜ ์ฝ๊ธฐ ๋ณต์žก๋„๋Š” O(1)
    • ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ
      • n๋ฒˆ์งธ ์š”์†Œ๋ฅผ ์ฝ์œผ๋ ค๋ฉด ๋งจ ์•ž๋ถ€ํ„ฐ ์ˆœ์„œ๋Œ€๋กœ n๊นŒ์ง€ ์„ธ๋ฉด์„œ ์ฝ๊ธฐ
      • ์ธ๋ฑ์Šค๋ฅผ ์ง€์ •ํ•ด ์ฝ์Œ. ๋ฐ์ดํ„ฐ์˜ ์ˆ˜๊ฐ€ ๋Š˜์–ด๋‚ ์ˆ˜๋ก ์ฒ˜๋ฆฌ ์‹œ๊ฐ„ ์ฆ๊ฐ€
      • ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ์˜ ์ฝ๊ธฐ ๋ณต์žก๋„๋Š” O(n)

 


๐Ÿค ํ

: ๋จผ์ € ์ง‘์–ด ๋„ฃ์€ ๋ฐ์ดํ„ฐ๊ฐ€ ๋จผ์ € ๋‚˜์˜ค๋Š” FIFO(First In First Out) ๊ตฌ์กฐ๋กœ ์ €์žฅ

  • add(item): item์„ ๋ฆฌ์ŠคํŠธ์˜ ๋๋ถ€๋ถ„์— ์ถ”๊ฐ€
  • remove(): ๋ฆฌ์ŠคํŠธ์˜ ์ฒซ ๋ฒˆ์งธ ํ•ญ๋ชฉ์„ ์ œ๊ฑฐ
  • peek() : ํ์˜ ๊ฐ€์žฅ ์œ„์— ์žˆ๋Š” ํ•ญ๋ชฉ return
  • isEmpty(): ํ๊ฐ€ ๋น„์–ด์žˆ์„๋•Œ, true๋ฅผ return

 

 

๐Ÿค ์Šคํƒ

: ํ•œ์ชฝ ๋์—์„œ๋งŒ ์ž๋ฃŒ๋ฅผ ๋„ฃ๊ณ  ๋บ„ ์ˆ˜ ์žˆ๋Š” ์„ ํ˜•๊ตฌ์กฐ(LIFO : LAST IN FIRST OUT)๋กœ ๋œ ์ž๋ฃŒ๊ตฌ์กฐ

  • pop() : ์Šคํƒ์˜ ๊ฐ€์žฅ ์œ„(peek)์— ์žˆ๋Š” ํ•ญ๋ชฉ ์ œ๊ฑฐ
  • push(data) : data ํ•˜๋‚˜๋ฅผ ์Šคํƒ์˜ ๊ฐ€์žฅ ์œ„(peek)์— ์ถ”๊ฐ€
  • peek() : ์Šคํƒ์˜ ๊ฐ€์žฅ ์œ„์— ์žˆ๋Š” ํ•ญ๋ชฉ return
  • isEmpty(): ์Šคํƒ์ด ๋น„์–ด์žˆ์„๋•Œ, true๋ฅผ return

 

๐Ÿค ๊ทธ๋ž˜ํ”„

: ๋…ธ๋“œ(N, node)์™€ ๊ทธ ๋…ธ๋“œ๋“ค์„ ์—ฐ๊ฒฐํ•˜๋Š” ์—ฃ์ง€(E, edge)๋ฅผ ํฌํ•จํ•˜๋Š” ๋น„์„ ํ˜• ์ž๋ฃŒ๊ตฌ์กฐ

: ์—ฐ๊ฒฐ๋˜์–ด์žˆ๋Š” ๊ฐ์ฒด ๊ด€์˜ ๊ด€๊ณ„๋ฅผ ํ‘œํ˜„

  • ๋ฌด๋ฐฉํ–ฅ ๊ทธ๋ž˜ํ”„(Undirected Graph)
    • ๊ฐ„์„ ์„ ํ†ตํ•ด์„œ ์–‘๋ฐฉํ–ฅ์œผ๋กœ ๊ฐˆ ์ˆ˜ ์žˆ๋‹ค.
    • (A,B) = (B,A)
  • ๋ฐฉํ–ฅ๊ทธ๋ž˜ํ”„ (Directed Graph)
    • ๊ฐ„์„ ์— ๋ฐฉํ–ฅ์„ฑ์ด ์กด์žฌํ•˜์—ฌ ํ•ด๋‹น ๋ฐฉํ–ฅ์œผ๋กœ๋งŒ ์œ ํšจ
    • A -> B ๋Š” <A,B>๋กœ ํ‘œ๊ธฐ
    • <A,B> != <B,A>
  • ๊ฐ€์ค‘์น˜ ๊ทธ๋ž˜ํ”„ (Wighted Graph)
    • ๊ฐ„์„ ์— ๋น„์šฉ/๊ฐ€์ค‘์น˜๊ฐ€ ํ• ๋‹น๋œ ๊ทธ๋ž˜ํ”„

 

 

 

728x90
๋ฐ˜์‘ํ˜•
Comments