Skip to content

Latest commit

ย 

History

History

Basic

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
ย 
ย 

์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ธฐ์ดˆ

์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ์™„์ „ํƒ์ƒ‰(Brute-Force, ๋ชจ๋“  ๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ ํƒ์ƒ‰ํ•ด๋ณด๋Š” ๊ฒƒ)์—์„œ ์‹œ์ž‘ํ•œ๋‹ค. ์ด๋Š” ๋ชจ๋“  ๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ ๋‹ค ๋”ฐ์ ธ๋ณด๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ•๋ ฅํ•˜์ง€๋งŒ, ์ตœ๋Œ€์˜ ์‹œ๊ฐ„๋ณต์žก๋„๋ฅผ ๊ฐ€์ง€๊ฒŒ ๋œ๋‹ค. ๋ชจ๋“  ๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ ์ƒ๊ฐํ•ด๋ณด๊ณ , ์‹œ๊ฐ„๋ณต์žก๋„๋ฅผ ์ค„์ผ ์ˆ˜ ์žˆ๋Š” ๋ถ€๋ถ„์ด ์žˆ๋‹ค๋ฉด ๊ทธ๋Ÿฌํ•œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ƒ๊ฐํ•ด๋ณด๊ณ , ๊ทธ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ •ํ™•ํ•˜๊ฒŒ ์ฝ”๋“œ๋กœ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•œ๋‹ค. ์ข‹์€ ์ฝ”๋“œ๋ฅผ ์งœ๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋‹ค์Œ ๊ณผ์ •์˜ ์—ฐ์Šต์ด ํ•„์š”ํ•˜๋‹ค.

  • ๋ฌธ์ œ๋ฅผ ํŒŒ์•…ํ•˜๊ณ  ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ƒ๊ฐํ•˜๊ธฐ
  • ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ๊ณต๊ฐ„๋ณต์žก๋„์™€ ์‹œ๊ฐ„๋ณต์žก๋„๋ฅผ ๊ณ„์‚ฐํ•˜์—ฌ ๋ฌธ์ œ์˜ ์ œ์•ฝ ์กฐ๊ฑด ๋‚ด์— ์ˆ˜ํ–‰๋  ์ˆ˜ ์žˆ๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์ธ์ง€ ํŒ๋‹จํ•˜๊ธฐ
  • ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๋น ๋ฅด๊ณ  ์ •ํ™•ํ•˜๊ฒŒ ๊ตฌํ˜„ํ•˜๊ธฐ (์—ฐ์Šต๋งŒ์ด ์ •๋‹ต)

์•Œ๊ณ ๋ฆฌ์ฆ˜(Algorithm) ์ด๋ž€?

๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•œ ์—ฌ๋Ÿฌ ๋™์ž‘๋“ค์˜ ๋ชจ์ž„์„ ๋งํ•˜๋ฉฐ, ๊ณ ๋Œ€ ํŽ˜๋ฅด์‹œ์•„์˜ ์ˆ˜ํ•™์ž ์•Œ์ฝฐ๋ฆฌ์ฆˆ๋ฏธ(Al-Khwarizmi)์—์„œ ์œ ๋ž˜ํ•˜์˜€๋‹ค.

์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ์กฐ๊ฑด

  • ์ •๋ฐ€์„ฑ : ๋ณ€ํ•˜์ง€ ์•Š๋Š” ๋ช…ํ™•ํ•œ ์ž‘์—… ๋‹จ๊ณ„๋ฅผ ๊ฐ€์ ธ์•ผ ํ•œ๋‹ค.
  • ์œ ์ผ์„ฑ : ๊ฐ ๋‹จ๊ณ„๋งˆ๋‹ค ๋ช…ํ™•ํ•œ ๋‹ค์Œ ๋‹จ๊ณ„๋ฅผ ๊ฐ€์ ธ์•ผ ํ•œ๋‹ค.
  • ์ž…๋ ฅ : ์ •์˜๋œ ์ž…๋ ฅ์„ ๋ฐ›์•„๋“ค์ผ ์ˆ˜ ์žˆ์–ด์•ผ ํ•œ๋‹ค.
  • ์ถœ๋ ฅ : ๋‹ต์œผ๋กœ ์ถœ๋ ฅ์„ ๋‚ด๋ณด๋‚ผ ์ˆ˜ ์žˆ์–ด์•ผ ํ•œ๋‹ค.
  • ์œ ํ•œ์„ฑ : ํŠน์ • ์ˆ˜์˜ ์ž‘์—… ์ดํ›„์— ์ •์ง€ํ•ด์•ผ ํ•œ๋‹ค. (์ •์ง€ ์กฐ๊ฑด)
  • ์ผ๋ฐ˜์„ฑ : ์ •์˜๋œ ์ž…๋ ฅ๋“ค์— ์ผ๋ฐ˜์ ์œผ๋กœ ์ ์šฉํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•œ๋‹ค.

์‹œ๊ฐ„๋ณต์žก๋„(Time Complexity)์™€ ๊ณต๊ฐ„๋ณต์žก๋„(Space Complexity)

๊ตฌํ˜„ํ•œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ํšจ์œจ์„ฑ์„ ๋”ฐ์งˆ ๋•Œ ์‹œ๊ฐ„๋ณต์žก๋„์™€ ๊ณต๊ฐ„๋ณต์žก๋„์˜ ๊ฐœ๋…์ด ๋‚˜์˜จ๋‹ค.
์ž…๋ ฅ ๋ฐ์ดํ„ฐ์˜ ํฌ๊ธฐ๊ฐ€ ์ปค์งˆ์ˆ˜๋ก ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ์„ฑ๋Šฅ ์ฐจ์ด๋Š” ๋‘๋“œ๋Ÿฌ์ง„๋‹ค. ์„ฑ๋Šฅ์ด ์ข‹์ง€ ์•Š์€ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ผ ๊ฒฝ์šฐ ์ž…๋ ฅ ๋ฐ์ดํ„ฐ์˜ ํฌ๊ธฐ๊ฐ€ ์ปค์กŒ์„ ๋•Œ ์‹คํ–‰ ์‹œ๊ฐ„์ด ๋น ๋ฅด๊ฒŒ ๋Š˜์–ด๋‚œ๋‹ค. ๋”ฐ๋ผ์„œ ๋ฌธ์ œ์— ๋”ฐ๋ผ ๋ฏธ๋ฆฌ ์‹œ๊ฐ„๋ณต์žก๋„๋ฅผ ๊ณ„์‚ฐํ•ด๋ณด๊ณ  ๋ฌธ์ œ ์กฐ๊ฑด์— ์ ํ•ฉํ•œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ธ์ง€ ํŒ๋‹จํ•˜๋Š” ๊ณผ์ •์ด ์ค‘์š”ํ•˜๋‹ค.

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

์‹œ๊ฐ„๋ณต์žก๋„๋ž€ ์ž‘๋™ํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ์ˆ˜ํ–‰์‹œ๊ฐ„์„ ์ •๋Ÿ‰ํ™”ํ•˜๋Š” ๊ฒƒ์„ ๋œปํ•œ๋‹ค.
์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ์‹œ๊ฐ„๋ณต์žก๋„๋Š” ์—ฐ์‚ฐ์˜ ํšŸ์ˆ˜ T(N)์„ ๊ตฌํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ์ฃผ๋กœ ์“ฐ์ธ๋‹ค. ๋ณดํ†ต 1์–ต(10^8)๋ฒˆ์˜ ์—ฐ์‚ฐ๋‹น 1์ดˆ์˜ ์‹œ๊ฐ„์ด ๊ฑธ๋ฆฐ๋‹ค๊ณ  ๊ฐ„์ฃผํ•œ๋‹ค.

์‹œ๊ฐ„๋ณต์žก๋„์˜ ํ‘œ๊ธฐ๋ฒ•

  • ๋น…-์˜ค(Big-Oh, ) ํ‘œ๊ธฐ๋ฒ• : Worst Case์˜ ์—ฐ์‚ฐํšŸ์ˆ˜๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค.
  • ๋น…-์˜ค๋ฉ”๊ฐ€(Big-Omega, ) ํ‘œ๊ธฐ๋ฒ• : Best Case์˜ ์—ฐ์‚ฐํšŸ์ˆ˜๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค.
  • ๋น…-์„ธํƒ€(Big-Theta, ํ‘œ๊ธฐ๋ฒ• : Average Case์˜ ์—ฐ์‚ฐํšŸ์ˆ˜๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค.

์ผ๋ฐ˜์ ์œผ๋กœ ์‹œ๊ฐ„๋ณต์žก๋„๋ฅผ ํ‘œํ˜„ํ•  ๋• **๋น…-์˜ค ํ‘œ๊ธฐ๋ฒ•(Big-O Notation)**์„ ์‚ฌ์šฉํ•œ๋‹ค. ๋น…-์˜ค ํ‘œ๊ธฐ๋ฒ•์€ ์—ฐ์‚ฐ ํšŸ์ˆ˜ T(N)์—์„œ ์ตœ๊ณ ์ฐจํ•ญ๋งŒ์„ ํ‘œ๊ธฐํ•˜๋Š” ํ‘œ๊ธฐ๋ฒ•์ด๋‹ค. ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ์‹คํ–‰ ์‹œ๊ฐ„์ด n + n^2์— ๋น„๋ก€ํ•œ๋‹ค๊ณ  ํ•  ๋•Œ, n์ด ๋งค์šฐ ์ปค์ง€๋ฉด n^2์ด๋‚˜ n + n^2์ด๋‚˜ ํฐ ์ฐจ์ด๊ฐ€ ๋‚˜์ง€ ์•Š๊ฒŒ ๋˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

์‹œ๊ฐ„๋ณต์žก๋„์˜ ์ข…๋ฅ˜

  • ์ƒ์ˆ˜ํ˜• O(1) : ํ•ญ์ƒ ์ผ์ •ํ•œ ์‹œ๊ฐ„ ์•ˆ์— ์‹คํ–‰ ์™„๋ฃŒ
  • ๋กœ๊ทธํ˜• O(logN) : ์‹คํ–‰ ์‹œ๊ฐ„์ด ์ž…๋ ฅ ํฌ๊ธฐ์˜ ๋กœ๊ทธ์— ๋น„๋ก€ํ•ด์„œ ๋Š˜์–ด๋‚จ
  • ์„ ํ˜• O(N) : ์‹คํ–‰ ์‹œ๊ฐ„์ด ์ž…๋ ฅ ํฌ๊ธฐ์— ๋ฐ”๋กœ ๋น„๋ก€ (์„ ํ˜•์ ์œผ๋กœ ์ฆ๊ฐ€)
  • ์„ ํ˜•๋กœ๊ทธํ˜• O(NlogN) : ์„ ํ˜• ์•Œ๊ณ ๋ฆฌ์ฆ˜๊ณผ ๋‹คํ•ญ์‹ ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ์ค‘๊ฐ„์ฏค ์†๋„
  • ๋‹คํ•ญ์‹ํ˜• O(N^c) : ์ž…๋ ฅ ํฌ๊ธฐ๊ฐ€ ๋Š˜์–ด๋‚˜๋ฉด ์‹คํ–‰ ์‹œ๊ฐ„์ด ๋น ๋ฅด๊ฒŒ ๋Š˜์–ด๋‚จ
  • ์ง€์ˆ˜ํ˜• O(c^N) : ๋‹คํ•ญ์‹ ์•Œ๊ณ ๋ฆฌ์ฆ˜๋ณด๋‹ค๋„ ๋” ๋น ๋ฅด๊ฒŒ ๋Š˜์–ด๋‚จ
  • ํŒฉํ† ๋ฆฌ์–ผํ˜• O(N!) : ๊ฐ€์žฅ ๋Š๋ฆฐ ์•Œ๊ณ ๋ฆฌ์ฆ˜. n์ด ์ž‘์•„๋„ ๊ธˆ๋ฐฉ ๊ฑฐ์˜ ์“ฐ๊ธฐ ํž˜๋“  ์ˆ˜์ค€์œผ๋กœ ๋Š๋ ค์ง„๋‹ค.

image

๊ทธ๋ฆผ์„ ๋ณด๋ฉด ์•Œ ์ˆ˜ ์žˆ ๋“ฏ์ด, O(n^2)๋ถ€ํ„ฐ ์‹คํ–‰ ์‹œ๊ฐ„์ด ํฌ๊ฒŒ ๋Š˜์–ด๋‚œ๋‹ค. ์„ ํ˜•๋กœ๊ทธํ˜•(์ค€์„ ํ˜•) O(NlogN) ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋˜๋Š” ๊ทธ๋ณด๋‹ค ๋” ๋น ๋ฅธ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ฐพ์œผ๋ฉด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„ฑ๋Šฅ์„ ํฌ๊ฒŒ ํ–ฅ์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค.

๊ณต๊ฐ„๋ณต์žก๋„(Space Complexity)

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

์ด๋ฅผ ์ž˜ ์•Œ๊ธฐ ์œ„ํ•ด์„œ๋Š” ์ž๋ฃŒํ˜• ๋ณ„ ๋ฉ”๋ชจ๋ฆฌ ํฌ๊ธฐ๊ฐ€ ์–ด๋–ค์ง€, ์‹ค์ œ ์ž๋ฃŒ๊ตฌ์กฐ๊ฐ€ ์–ด๋–ป๊ฒŒ ๊ตฌํ˜„๋˜๋Š”์ง€ ๋“ฑ์„ ์ œ๋Œ€๋กœ ์ดํ•ดํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•˜๋‹ค.

แ„‹แ…กแ†ฏแ„€แ…ฉแ„…แ…ตแ„Œแ…ณแ†ท แ„‹แ…ตแ„†แ…ตแ„Œแ…ตแ„ƒแ…ณแ†ฏ-9