Big-o.md

์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œํ’€์ด๋ฅผ ํ•˜๋ฉด์„œ ํšจ์œจ์„ฑ์„ ํ…Œ์ŠคํŠธํ•  ๋•Œ ์ฝ”๋“œ์˜ ์‹œ๊ฐ„๋ณต์žก๋„๋ฅผ ๊ตฌํ•ด ํšจ์œจ์ ์ธ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์งค ์ˆ˜ ์žˆ๋„๋ก ํ•˜๊ธฐ ์œ„ํ•ด์„œ ์‹œ๊ฐ„๋ณต์žก๋„๋ฅผ ๊ณต๋ถ€ํ•ด๋ณด๊ฒ ๋‹ค.

์•Œ๊ณ ๋ฆฌ์ฆ˜

  • ์–ด๋–ค ๋ชฉ์ ์„ ๋‹ฌ์„ฑํ•˜๊ฑฐ๋‚˜ ๊ฒฐ๊ณผ๋ฌผ์„ ๋งŒ๋“ค์–ด๋‚ด๊ธฐ ์œ„ํ•ด ๊ฑฐ์ณ์•ผ ํ•˜๋Š” ์ผ๋ จ์˜ ๊ณผ์ •๋“ค

  • ํ•œ๊ฐ€์ง€ ์ƒํ™ฉ์— ๋Œ€ํ•ด ๋‹ค์–‘ํ•œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ๊ฐ€์žฅ ๋น ๋ฅธ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๊ตฌํ•˜๊ธฐ ์œ„ํ•ด ์‹œ๊ฐ„๋ณต์žก๋„๊ฐ€ ๊ฐ€์žฅ ๋‚ฎ์€ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์„ ํƒํ•ด ์‚ฌ์šฉํ•œ๋‹ค.

์ฆ‰, ํŠน์ • ์ƒํ™ฉ์—์„œ ๊ฐ€์žฅ ๋น ๋ฅธ ์‹คํ–‰์†๋„๋ฅผ ๊ฐ€์ง€๋Š” ์ฝ”๋“œ๋ฅผ ์งœ๊ธฐ ์œ„ํ•ด ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์—ฐ๊ตฌํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ์‹คํ–‰์‹œ๊ฐ„

  • ์ž…๋ ฅ๊ฐ’์˜ ํฌ๊ธฐ

  • ์ž…๋ ฅ๊ฐ’์˜ ํฌ๊ธฐ์— ๋”ฐ๋ฅธ ํ•จ์ˆ˜์˜ ์ฆ๊ฐ€๋Ÿ‰ -> ์„ฑ์žฅ๋ฅ 

์ด๋•Œ ์ค‘์š”ํ•˜์ง€ ์•Š์€ ์ƒ์ˆ˜๋“ค๊ณผ ๊ณ„์ˆ˜๋ฅผ ์ œ๊ฑฐํ•˜๋ฉด ์ค‘์š”ํ•œ ์„ฑ์žฅ๋ฅ ์— ์ง‘์ค‘ํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ ์ด๊ฒƒ์„ ์ ๊ทผ์ ํ‘œ๊ธฐ๋ฒ•-Asymptotic notation ์ด๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค.

์ ๊ทผ์  ํ‘œ๊ธฐ๋ฒ•์˜ ์ข…๋ฅ˜

  • ์ตœ์ƒ์˜ ๊ฒฝ์šฐ - ์˜ค๋ฉ”๊ฐ€ ํ‘œ๊ธฐ๋ฒ•

  • ํ‰๊ท ์˜ ๊ฒฝ์šฐ - ์„ธํƒ€ ํ‘œ๊ธฐ๋ฒ•

  • ์ตœ์•…์˜ ๊ฒฝ์šฐ - ๋น…์˜ค ํ‘œ๊ธฐ๋ฒ•

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

์ด์ œ๋ถ€ํ„ฐ ๋น…์˜ค ํ‘œ๊ธฐ๋ฒ•์œผ๋กœ ์‹œ๊ฐ„๋ณต์žก๋„๋ฅผ ๊ตฌํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ์•„๋ณด์ž

๋น…์˜ค ํ‘œ๊ธฐ๋ฒ• - Big-O

๋น…์˜ค ํ‘œ๊ธฐ๋ฒ•์€ ๋ถˆํ•„์š”ํ•œ ์—ฐ์‚ฐ์„ ์ œ๊ฑฐํ•˜์—ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ถ„์„์„ ์‰ฝ๊ฒŒ ํ•  ๋ชฉ์ ์œผ๋กœ ์‚ฌ์šฉ๋œ๋‹ค.

๋น…์˜ค ํ‘œ๊ธฐ๋ฒ•์œผ๋กœ๋Š” ์‹œ๊ฐ„๋ณต์žก๋„์™€ ๊ณต๊ฐ„๋ณต์žก๋„๋ฅผ ์ธก์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.

  • ์‹œ๊ฐ„ ๋ณต์žก๋„ - ์ž…๋ ฅ๋œ N์˜ ํฌ๊ธฐ์— ๋”ฐ๋ผ ์‹คํ–‰๋˜๋Š” ์กฐ์ž‘์˜ ์ˆ˜, ์ฆ‰ ์—ฐ์‚ฐํ•˜๋Š” ํšŸ์ˆ˜

  • ๊ณต๊ฐ„ ๋ณต์žก๋„ - ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ์‹คํ–‰๋  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ๋ฉ”๋ชจ๋ฆฌ์˜ ์–‘ -> HW์˜ ๋ฐœ์ „์œผ๋กœ ์ค‘์š”๋„๊ฐ€ ๋–จ์–ด์ง

  • Big-O complexity big-onoattionchart

์‹œ๊ฐ„ ๋ณต์žก๋„

  • ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•ด ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•˜๋Š” ์—ฐ์‚ฐ์˜ ์ˆ˜

์™œ ์‹คํ–‰์‹œ๊ฐ„์ผ ์•„๋‹Œ ์—ฐ์‚ฐ์ˆ˜์น˜์ผ๊นŒ? ์‹คํ–‰์‹œ๊ฐ„์€ HW์˜ ์„ฑ๋Šฅ, ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์˜ ์ข…๋ฅ˜ ๋“ฑ ์ƒํ™ฉ์— ๋”ฐ๋ผ ํŽธ์ฐจ๊ฐ€ ํฌ๊ฒŒ ๋‹ฌ๋ผ์ง€๊ธฐ ๋•Œ๋ฌธ์— ๋ช…๋ น์–ด์˜ ์‹คํ–‰ ํšŸ์ˆ˜๋งŒ์„ ๊ณ ๋ คํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

์‹œ๊ฐ„๋ณต์žก๋„์—์„œ ๊ฐ€์žฅ ํฐ ์˜ํ–ฅ์„ ๋ฏธ์น˜๋Š” ๊ฒƒ์€ ๋ฐ”๋กœ ๐Ÿ’ก N์˜ ๋‹จ์œ„์ด๋‹ค.

  • ์ž๋ฃŒ์˜ ๊ฐœ์ˆ˜๊ฐ€ ๋งŽ์€ ๊ฒฝ์šฐ ์ฐจ์ˆ˜๊ฐ€ ๊ฐ€์žฅ ํฐ ํ•ญ, ์ฆ‰ ์ตœ๊ณ  ์ฐจํ•ญ์ด ๊ฐ€์žฅ ํฐ ์˜ํ–ฅ์„ ๋ผ์น˜๊ธฐ ๋•Œ๋ฌธ์— big-Oํ‘œ๊ธฐ๋ฒ•์—์„œ๋Š” ๊ฐ€์žฅํฐ ์ฐจ์ˆ˜๋งŒ์„ ๋‚˜ํƒ€๋‚ธ๋‹ค.

์ฝ”๋“œ์—์„œ ์‹œ๊ฐ„๋ณต์žก๋„ ๊ตฌํ•˜๊ธฐ

  • ์•„๋ž˜์˜ ์ฝ”๋“œ๋ฅผ ํ†ตํ•ด ์‹œ๊ฐ„๋ณต์žก๋„๋ฅผ ๊ตฌํ•ด๋ณด์ž

int sum = 0
for (int i=0; i<=n; i++){
    sum += i
}
  • sum = 0 => 1

  • int i=0 => 1

  • i++ => n

  • sum+=i => n -> 1+1+n+n => 2n + 2 ์‹์˜ ์ตœ๊ณ ์ฐจํ•ญ์ด 2n์ด๊ธฐ๋•Œ๋ฌธ์— O(2n+2) => O(n) ์ด ์ฝ”๋“œ์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„๋ฅผ big-Oํ‘œ๊ธฐ๋ฒ•์œผ๋กœ ํ‘œ๊ธฐํ•˜๋ฉด O(n)์ด๋‹ค.

์‹œ๊ฐ„๋ณต์žก๋„ ๊ตฌํ•˜๋Š” tip

  • ํ•˜๋‚˜์˜ ๋ฃจํ”„๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋‹จ์ผ ์š”์†Œ ์ง‘ํ•ฉ์„ ๋ฐ˜๋ณต ํ•˜๋Š” ๊ฒฝ์šฐ : O (n)

  • ์ปฌ๋ ‰์…˜์˜ ์ ˆ๋ฐ˜ ์ด์ƒ ์„ ๋ฐ˜๋ณต ํ•˜๋Š” ๊ฒฝ์šฐ : O (n / 2) -> O (n)

  • ๋‘ ๊ฐœ์˜ ๋‹ค๋ฅธ ๋ฃจํ”„๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋‘ ๊ฐœ์˜ ๊ฐœ๋ณ„ ์ฝœ๋ ‰์…˜์„ ๋ฐ˜๋ณต ํ•  ๊ฒฝ์šฐ : O (n + m) -> O (n)

  • ๋‘ ๊ฐœ์˜ ์ค‘์ฒฉ ๋ฃจํ”„๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋‹จ์ผ ์ปฌ๋ ‰์…˜์„ ๋ฐ˜๋ณตํ•˜๋Š” ๊ฒฝ์šฐ : O (nยฒ)

  • ๋‘ ๊ฐœ์˜ ์ค‘์ฒฉ ๋ฃจํ”„๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋‘ ๊ฐœ์˜ ๋‹ค๋ฅธ ์ฝœ๋ ‰์…˜์„ ๋ฐ˜๋ณต ํ•  ๊ฒฝ์šฐ : O (n * m) -> O (nยฒ)

  • ์ปฌ๋ ‰์…˜ ์ •๋ ฌ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ : O(n*log(n))

์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์‹œ๊ฐ„๋ณต์žก๋„ sorting

Last updated