3. Big O ์‹œ๊ฐ„ ๋ณต์žก๋„

2ํŽ˜์ด์ง€๋ฅผ ํ†ตํ•ด ๋ณด์•˜๋“ฏ์ด ์ž…๋ ฅ์— ๋”ฐ๋ผ ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ๋Ÿฐํƒ€์ž„์ด ์–ด๋–ป๊ฒŒ ์ฆ๊ฐ€ํ•˜๋Š”์ง€์— ๋Œ€ํ•œ ๊ฒƒ์ด ๋ฐ”๋กœ Big O์ด๋‹ค.

์ฆ‰ ์ž…๋ ฅ๊ณผ ํ•ด๋‹น ์ž…๋ ฅ์— ๋”ฐ๋ฅธ ์ƒ๋Œ€์ ์ธ ์‹œ๊ฐ„ ๊ฐ„์˜ ๊ด€๊ณ„์ด๋‹ค.

๋‹ค์–‘ํ•œ ๊ธฐ๋ณธ์ ์ธ ํ‘œ๊ธฐ๋ฒ•์ด ์กด์žฌํ•œ๋‹ค.

  1. ์„ ํ˜•ํ•จ์ˆ˜ f(n) = n
  2. ์ง€์ˆ˜ํ•จ์ˆ˜ f(n) = n^2, f(n) = 2^n etc...
  3. ์ƒ์ˆ˜ํ•จ์ˆ˜ f(n) = 1
  4. ์ด์™ธ์˜ ๋‹ค์–‘ํ•œ ํ•จ์ˆ˜

ํ‘œ๊ธฐ๋ฒ•.jpeg

์œ„์˜ ๊ทธ๋ž˜ํ”„๋Š” ๋ธ”๋กœ๊ทธ๋ฅผ ํƒ์ƒ‰ํ•˜๋ฉฐ ๋น…์˜ค์˜ ๊ฐœ๋…์„ ์ •๋ฆฌํ•œ ๊ธ€์„ ์ฐพ์•„๋ณด๋‹ค ์ฐพ๊ฒŒ๋œ ๊ทธ๋ž˜ํ”„์ด๋‹ค.

๋น…์˜ค ํ‘œ๊ธฐ๋ฒ•์—์„œ ์ฃผ๋กœ ์‚ฌ์šฉ๋˜๋Š” ํ‘œ๊ธฐ๋ฒ•์„ ์‹œ๊ฐ„ ๋ณต์žก๋„์˜ ์„ฑ๋Šฅ์„ ๋น„๊ตํ•˜๋Š” ๊ทธ๋ž˜ํ”„๋กœ

์ƒ์ˆ˜ํ•จ์ˆ˜๊ฐ€ ๊ฐ€์žฅ ํšจ์œจ์„ฑ์ด ์ข‹๊ณ  ์ง€์ˆ˜ํ•จ์ˆ˜๊ฐ€ ํšจ์œจ์„ฑ์ด ์ œ์ผ ๋–จ์–ด์ง€๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

๋น…์˜ค ํ‘œ๊ธฐ๋ฒ•์˜ ํ‘œ๊ธฐ๋ฒ•๋“ค์— ๋Œ€ํ•œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ๊ด€๋ จ์„ ๋ณด๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

  1. O(1) : ์Šคํƒ์—์„œ Push, Pop
  2. O(log n) : ์ด์ง„ํŠธ๋ฆฌ
  3. O(n) : for ๋ฌธ
  4. O(n log n) : ํ€ต ์ •๋ ฌ(quick sort), ๋ณ‘ํ•ฉ์ •๋ ฌ(merge sort), ํž™ ์ •๋ ฌ(heap Sort)
  5. O(n^2): ์ด์ค‘ for ๋ฌธ, ์‚ฝ์ž…์ •๋ ฌ(insertion sort), ๊ฑฐํ’ˆ์ •๋ ฌ(bubble sort), ์„ ํƒ์ •๋ ฌ(selection sort)
  6. O(2^n): ํ”ผ๋ณด๋‚˜์น˜ ์ˆ˜์—ด

์ด๋ฅผ ํ†ตํ•ด์„œ ๋Œ€๋žต ๊ธฐ๋ณธ์ ์ธ ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ์‹œ๊ฐ„ ํšจ์œจ์„ฑ์— ๋Œ€ํ•ด์„œ๋Š” ์ƒ๊ฐํ•ด๋ณผ ์ˆ˜ ์žˆ๊ฒ ๋‹ค ์‹ถ์—ˆ๋‹ค.

๊ทธ๋Ÿผ ์ด์–ด์„œ solution2์˜ addUpTo(n) ํ•จ์ˆ˜๋Š” ์–ด๋–ค ๋น…์˜ค ํ‘œํ˜„์‹์— ํ•ด๋‹น๋ ๊นŒ?

//solution2
function addUpToN(n) {
    return n * (n + 1) / 2;
}

solution2์˜ ํ•จ์ˆ˜๋Š” ํ•ญ์ƒ 3๊ฐœ์˜ ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ•˜์—ฌ n ์˜ ์ž…๋ ฅ๊ณผ ๊ด€๋ จ์—†์ด ํ•ญ์ƒ ๊ณ ์ •์ ์ธ ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ•˜๋ฏ€๋กœ O(1) ์— ํ•ด๋‹นํ•˜๋Š” ์ƒ์ˆ˜ํ•จ์ˆ˜์— ํ•ด๋‹นํ•  ๊ฒƒ์ด๋‹ค.

solution1์˜ ๊ฒฝ์šฐ for ๋ฌธ์ด ์กด์žฌํ•˜์—ฌ n ์˜ ๊ฐ’์— ๋”ฐ๋ผ ์ฆ๊ฐ€ํ•œ๋‹ค. ์šฐ๋ฆฌ๋Š” ์ด๋ฅผ 5n+2 ๋กœ ์ •๋ฆฌํ–ˆ์—ˆ๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด ๋น…์˜ค ํ‘œ๊ธฐ๋ฒ•์€ O(5n+2) ๋กœ ์ •์˜ํ•  ์ˆ˜ ์žˆ์„๊นŒ? ๊ฒฐ๋ก ์€ ๊ทธ๋ ‡์ง€ ์•Š๋‹ค.

์ด๋Š” ๋น…์˜ค ํ‘œ๊ธฐ๋ฒ•์˜ ๋‹จ์ˆœํ™”์—์„œ ์‚ดํŽด๋ณด์ž.

์ฐธ๊ณ ์ž๋ฃŒ

<https://noahlogs.tistory.com/27>