CS/Algorithm

๋น… ์˜ค(Big O) - ์‹œ๊ฐ„๋ณต์žก๋„

deo2kim 2020. 9. 9. 20:33
๋ฐ˜์‘ํ˜•

๐Ÿ“— ๋น… ์˜ค(Big O) - ์‹œ๊ฐ„๋ณต์žก๋„

๐Ÿ”ต ์‹œ๊ฐ„ ๋ณต์žก๋„๋ž€?

์‰ฝ๊ฒŒ ๋งํ•ด ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ์‹คํ–‰์†๋„ ๊ณ„์‚ฐ์ด๋‹ค. - ์ตœ์•…์˜ ์‹คํ–‰ ์‹œ๊ฐ„์„ ๊ณ„์‚ฐ

์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ํ•ด๊ฒฐํ•˜๋‹ค ๋ณด๋ฉด ์‹œ๊ฐ„์— ๋Œ€ํ•ด์„œ ์‹ ๊ฒฝ์ด ์“ฐ์ผ ๊ฒƒ์ด๋‹ค.

๋‹ค๋ฅผ ์‚ฌ๋žŒ์˜ ํ’€์ด์™€ ๋น„๊ตํ•œ๋‹ค๋˜์ง€, ์‹œ๊ฐ„์ดˆ๊ณผ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค๋˜์ง€... 

 

์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋‹ค์–‘ํ•˜๋‹ค. ๊ทธ๋Ÿฌ๋ฏ€๋กœ ์–ด๋–ค ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ๋” ํšจ์œจ์ ์ธ์ง€ ๋ถ„์„ํ•˜๊ธฐ ์œ„ํ•ด ์‹œ๊ฐ„ ๋ณต์žก๋„๋ฅผ ๊ณ„์‚ฐํ•ด์•ผ ํ•œ๋‹ค.

 

๋ณต์žก๋„์—๋Š”

  • ์‹œ๊ฐ„ ๋ณต์žก๋„ - ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์‹คํ–‰ ์†๋„ 
  • ๊ณต๊ฐ„ ๋ณต์žก๋„ - ๋ฉ”๋ชจ๋ฆฌ ํฌ๊ธฐ(์‚ฌ์šฉ๋Ÿ‰)

์ด ์žˆ์ง€๋งŒ ๋ณดํ†ต์€ ์‹œ๊ฐ„ ๋ณต์žก๋„๋ฅผ ๋ณธ๋‹ค.

 

 

๐Ÿ”ต ๋น…์˜ค ํ‘œ๊ธฐ๋ฒ•

  • ์ž…๋ ฅ n์— ๋”ฐ๋ผ ๊ฒฐ์ •๋˜๋Š” ์‹œ๊ฐ„ ๋ณต์žก๋„ ํ•จ์ˆ˜
  • O(1), O(logn), O(n), O(nlogn), O(n^2), O(2^n) ๋“ฑ์ด ์žˆ๋‹ค.
  • ์ƒ์ˆ˜ O(1): ๋ฐ์ดํ„ฐ ์ˆ˜์— ์ƒ๊ด€์—†์ด ์—ฐ์‚ฐํšŸ์ˆ˜ ๊ณ ์ •
  • ๋กœ๊ทธ O(logn): ๋ฐ์ดํ„ฐ ์ˆ˜ ์ฆ๊ฐ€์œจ์— ๋น„ํ•ด ์—ฐ์‚ฐํšŸ์ˆ˜ ์ฆ๊ฐ€์œจ์ด ๋‚ฎ์Œ
  • ์„ ํ˜• O(n): ๋ฐ์ดํ„ฐ ์ˆ˜์™€ ์—ฐ์‚ฐํšŸ์ˆ˜๊ฐ€ ๋น„๋ก€
  • ์„ ํ˜•๋กœ๊ทธ O(nlogn): ๋ฐ์ดํ„ฐ ์ˆ˜์— ๋‘๋ฐฐ ์กฐ๊ธˆ ๋„˜๊ฒŒ ์—ฐ์‚ฐํšŸ์ˆ˜ ๋น„๋ก€
  • ์ œ๊ณฑ O(n^2): ์ฃผ๋กœ ๋ฐ˜๋ณต๋ฌธ์ด ์ค‘์ฒฉ๋  ๋•Œ ๋ฐœ์ƒ
  • ์ž…๋ ฅ์˜ ํฌ๊ธฐ(n)์ด ์ž‘์„ ๋•Œ๋Š” ํฌ๊ฒŒ ์ƒ๊ด€์ด ์—†์ง€๋งŒ n์ด ์ปค์ง์— ๋”ฐ๋ผ ๊ธฐํ•˜๊ธ‰์ˆ˜์ ์œผ๋กœ ์‹œ๊ฐ„ ๋ณต์žก๋„๊ฐ€ ์ปค์ง„๋‹ค.

 

๐Ÿ”ต ๋น…์˜ค ๋ฒ•์น™ ๊ณ„์‚ฐ

  • ๊ณ„์ˆ˜ ๋ฒ•์น™: ์ž…๋ ฅ ํฌ๊ธฐ๊ฐ€ ํด ๋•Œ ๊ณ„์ˆ˜ ๋ฌด์‹œ ๊ฐ€๋Šฅ O(2n) = O(n), O(n + 2) = O(n)
  • ํ•ฉ ๋ฒ•์น™: ๋”ํ•  ์ˆ˜ ์žˆ๋‹ค. O(n) + O(5n) = O(6n)
  • ๊ณฑ ๋ฒ•์น™: ๊ณฑํ•  ์ˆ˜ ์žˆ๋‹ค. O(n) * O(5n) = O(5n^2)

์˜ํ–ฅ๋ ฅ์ด ์—†๋Š” ํ•ญ์€ ๋ฌด์‹œ๊ฐ€๋Šฅ, ๊ฐ€์žฅ ํฐ ์ง€์ˆ˜๋งŒ์„ ํ‘œ๊ธฐ, ์ตœ์•…์˜ ์‹œ๋‚˜๋ฆฌ์˜ค ๊ฐ€์ •

ex) O(n^2 + 10n + 10) => O(n^2)

 

 

 

๋ฐ˜์‘ํ˜•