์ž๋ฃŒ๊ตฌ์กฐ

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

mellomello.made 2022. 7. 5. 00:27

 

๐ŸŒผ ์‹œ๊ฐ„๋ณต์žก๋„

์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ๋กœ์ง์„ ์ฝ”๋“œ๋กœ ๊ตฌํ˜„ํ•  ๋•Œ, ์‹œ๊ฐ„๋ณต์žก๋„๋ฅผ ๊ณ ๋ คํ•œ๋‹ค๋Š” ๊ฒƒ์€

'์ž…๋ ฅ๊ฐ’์˜ ๋ณ€ํ™”์— ๋”ฐ๋ผ ์—ฐ์‚ฐ์„ ์‹คํ–‰ํ•  ๋•Œ, ์—ฐ์‚ฐ ํšŸ์ˆ˜์— ๋น„ํ•ด ์‹œ๊ฐ„์ด ์–ผ๋งˆ๋งŒํผ ๊ฑธ๋ฆฌ๋Š”๊ฐ€?'๋ผ๋Š” ๋ง์ด๋‹ค.

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

์‹œ๊ฐ„ ๋ณต์žก๋„๋Š” Big-o ํ‘œ๊ธฐ๋ฒ•์„ ์‚ฌ์šฉํ•ด ๋‚˜ํƒ€๋‚ธ๋‹ค.

 

๐ŸŒผ Big-o ํ‘œ๊ธฐ๋ฒ•

์‹œ๊ฐ„๋ณต์žก๋„๋ฅผ ํ‘œ๊ธฐํ•˜๋Š” ๋ฐฉ๋ฒ•

  • Big-O(๋น…-์˜ค) ⇒ ์ƒํ•œ ์ ๊ทผ (์ตœ์•…์˜ ๊ฒฝ์šฐ)
  • Big-Ω(๋น…-์˜ค๋ฉ”๊ฐ€) ⇒ ํ•˜ํ•œ ์ ๊ทผ (์ตœ์„ ์˜ ๊ฒฝ์šฐ)
  • Big-θ(๋น…-์„ธํƒ€) ⇒ ๊ทธ ๋‘˜์˜ ํ‰๊ท  (ํ‰๊ท ์˜ ๊ฒฝ์šฐ)
  • ์œ„ ์„ธ ๊ฐ€์ง€ ํ‘œ๊ธฐ๋ฒ•์€ ์‹œ๊ฐ„ ๋ณต์žก๋„๋ฅผ ๊ฐ๊ฐ ์ตœ์•…, ์ตœ์„ , ์ค‘๊ฐ„(ํ‰๊ท )์˜ ๊ฒฝ์šฐ์— ๋Œ€ํ•˜์—ฌ ๋‚˜ํƒ€๋‚ด๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค.

์ด ์ค‘์—์„œ Big-O ํ‘œ๊ธฐ๋ฒ•์ด ๊ฐ€์žฅ ์ž์ฃผ ์‚ฌ์šฉ๋˜๋ฉฐ, ๋น…์˜ค ํ‘œ๊ธฐ๋ฒ•์€ ์ตœ์•…์˜ ๊ฒฝ์šฐ๋ฅผ ๊ณ ๋ คํ•˜๋ฏ€๋กœ, ํ”„๋กœ๊ทธ๋žจ์ด ์‹คํ–‰๋˜๋Š” ๊ณผ์ •์—์„œ ์†Œ์š”๋˜๋Š” ์ตœ์•…์˜ ์‹œ๊ฐ„๊นŒ์ง€ ๊ณ ๋ คํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

"์ตœ์†Œํ•œ ํŠน์ • ์‹œ๊ฐ„ ์ด์ƒ์ด ๊ฑธ๋ฆฐ๋‹ค" ํ˜น์€ "์ด ์ •๋„ ์‹œ๊ฐ„์ด ๊ฑธ๋ฆฐ๋‹ค"๋ฅผ ๊ณ ๋ คํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค "์ด ์ •๋„ ์‹œ๊ฐ„๊นŒ์ง€ ๊ฑธ๋ฆด ์ˆ˜ ์žˆ๋‹ค"๋ฅผ ๊ณ ๋ คํ•ด์•ผ ๊ทธ์— ๋งž๋Š” ๋Œ€์‘์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

์ตœ์•…์˜ ๊ฒฝ์šฐ๋„ ๊ณ ๋ คํ•˜์—ฌ ๋Œ€๋น„ํ•˜๋Š” ๊ฒƒ์ด ๋ฐ”๋žŒ์งํ•˜๋‹ค.

 

๐ŸŒผ Big-O ํ‘œ๊ธฐ๋ฒ•์˜ ์ข…๋ฅ˜

  1. O(1) : ์ƒ์ˆ˜ ์‹œ๊ฐ„ ์•Œ๊ณ ๋ฆฌ์ฆ˜
  2. O(n) : ์„ ํ˜• ์‹œ๊ฐ„ ์•Œ๊ณ ๋ฆฌ์ฆ˜
  3. O(log n) : ๋กœ๊ทธ ์‹œ๊ฐ„ ์•Œ๊ณ ๋ฆฌ์ฆ˜
  4. O(n2) : ํ‰๋ฐฉ ์‹œ๊ฐ„ ์•Œ๊ณ ๋ฆฌ์ฆ˜
  5. O(2n) : ์ง€์ˆ˜ ์‹œ๊ฐ„ 
โ€ป ์ฐธ๊ณ  ์‹œ๊ฐ„๋ณต์žก๋„ ์—ฐ์‚ฐ ํฌ๊ธฐ ์ˆœ์„œ 
     - O(1) < O(log n) < O(n) < O(nlogn) < O(n2) < O(n3) < O(2n) < O(n!) < O(∞)

 

O(1)๋Š” ์ผ์ •ํ•œ ๋ณต์žก๋„(constant complexity)๋ผ๊ณ  ํ•˜๋ฉฐ, ์ž…๋ ฅ๊ฐ’์ด ์ฆ๊ฐ€ํ•˜๋”๋ผ๋„ ์‹œ๊ฐ„์ด ๋Š˜์–ด๋‚˜์ง€ ์•Š๋Š”๋‹ค.

  • ์ž…๋ ฅ๊ฐ’์˜ ํฌ๊ธฐ์™€ ๊ด€๊ณ„์—†์ด, ์ฆ‰์‹œ ์ถœ๋ ฅ๊ฐ’์„ ์–ป์–ด๋‚ผ ์ˆ˜ ์žˆ๋‹ค๋Š” ์˜๋ฏธ์ด๋‹ค.

function O_1_algorithm(arr, index) {
	return arr[index];
}

let arr = [1, 2, 3, 4, 5];
let index = 1;
let result = O_1_algorithm(arr, index);
console.log(result); // 2

[์ฝ”๋“œ] O(1)์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„๋ฅผ ๊ฐ€์ง€๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์˜ˆ์‹œ

์œ„ ์•Œ๊ณ ๋ฆฌ์ฆ˜์—์„  ์ž…๋ ฅ๊ฐ’์˜ ํฌ๊ธฐ๊ฐ€ ์•„๋ฌด๋ฆฌ ์ปค์ ธ๋„ ์ฆ‰์‹œ ์ถœ๋ ฅ๊ฐ’์„ ์–ป์–ด๋‚ผ ์ˆ˜ ์žˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด arr์˜ ๊ธธ์ด๊ฐ€ 100๋งŒ์ด๋ผ๋„, ์ฆ‰์‹œ ํ•ด๋‹น index์— ์ ‘๊ทผํ•ด ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•  ์ˆ˜ ์žˆ๋‹ค.

 


 

O(n)์€ ์„ ํ˜• ๋ณต์žก๋„(linear complexity)๋ผ๊ณ  ๋ถ€๋ฅด๋ฉฐ, ์ž…๋ ฅ๊ฐ’์ด ์ฆ๊ฐ€ํ•จ์— ๋”ฐ๋ผ ์‹œ๊ฐ„ ๋˜ํ•œ ๊ฐ™์€ ๋น„์œจ๋กœ ์ฆ๊ฐ€ํ•˜๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค.

  • ์˜ˆ๋ฅผ ๋“ค์–ด ์ž…๋ ฅ๊ฐ’์ด 1์ผ ๋•Œ 1์ดˆ์˜ ์‹œ๊ฐ„์ด ๊ฑธ๋ฆฌ๊ณ , ์ž…๋ ฅ๊ฐ’์„ 100๋ฐฐ๋กœ ์ฆ๊ฐ€์‹œ์ผฐ์„ ๋•Œ 1์ดˆ์˜ 100๋ฐฐ์ธ 100์ดˆ๊ฐ€ ๊ฑธ๋ฆฌ๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๊ตฌํ˜„ํ–ˆ๋‹ค๋ฉด, ๊ทธ ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ O(n)์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„๋ฅผ ๊ฐ€์ง„๋‹ค๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค.

function O_n_algorithm(n) {
	for (let i = 0; i < n; i++) {
	// do something for 1 second
	}
}

function another_O_n_algorithm(n) {
	for (let i = 0; i < 2n; i++) {
	// do something for 1 second
	}
}

 

O_n_algorithm ํ•จ์ˆ˜์—์„  ์ž…๋ ฅ๊ฐ’(n)์ด 1 ์ฆ๊ฐ€ํ•  ๋•Œ๋งˆ๋‹ค ์ฝ”๋“œ์˜ ์‹คํ–‰ ์‹œ๊ฐ„์ด 1์ดˆ์”ฉ ์ฆ๊ฐ€ํ•œ๋‹ค.

์ฆ‰ ์ž…๋ ฅ๊ฐ’์ด ์ฆ๊ฐ€ํ•จ์— ๋”ฐ๋ผ ๊ฐ™์€ ๋น„์œจ๋กœ ๊ฑธ๋ฆฌ๋Š” ์‹œ๊ฐ„์ด ๋Š˜์–ด๋‚˜๊ณ  ์žˆ๋‹ค.

๊ทธ๋ ‡๋‹ค๋ฉด ํ•จ์ˆ˜ another_O_n_algorithm ์€ ์ž…๋ ฅ๊ฐ’์ด 1 ์ฆ๊ฐ€ํ• ๋•Œ๋งˆ๋‹ค ์ฝ”๋“œ์˜ ์‹คํ–‰ ์‹œ๊ฐ„์ด 2์ดˆ์”ฉ ์ฆ๊ฐ€ํ•œ๋‹ค.

์ด ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋˜ํ•œ Big-O ํ‘œ๊ธฐ๋ฒ•์œผ๋กœ๋Š” O(n)์œผ๋กœ ํ‘œ๊ธฐํ•œ๋‹ค.

์ž…๋ ฅ๊ฐ’์ด ์ปค์ง€๋ฉด ์ปค์งˆ์ˆ˜๋ก ๊ณ„์ˆ˜(n ์•ž์— ์žˆ๋Š” ์ˆ˜)์˜ ์˜๋ฏธ(์˜ํ–ฅ๋ ฅ)๊ฐ€ ์ ์  ํ‡ด์ƒ‰๋˜๊ธฐ ๋•Œ๋ฌธ์—, ๊ฐ™์€ ๋น„์œจ๋กœ ์ฆ๊ฐ€ํ•˜๊ณ  ์žˆ๋‹ค๋ฉด 2๋ฐฐ๊ฐ€ ์•„๋‹Œ 5๋ฐฐ, 10๋ฐฐ๋กœ ์ฆ๊ฐ€ํ•˜๋”๋ผ๋„ O(n)์œผ๋กœ ํ‘œ๊ธฐํ•œ๋‹ค.

 


 

O(log n)์€ ๋กœ๊ทธ ๋ณต์žก๋„(logarithmic complexity)๋ผ๊ณ  ๋ถ€๋ฅด๋ฉฐ, Big-Oํ‘œ๊ธฐ๋ฒ•์ค‘ O(1) ๋‹ค์Œ์œผ๋กœ ๋น ๋ฅธ ์‹œ๊ฐ„ ๋ณต์žก๋„๋ฅผ ๊ฐ€์ง„๋‹ค.

  • BST์—์„  ์›ํ•˜๋Š” ๊ฐ’์„ ํƒ์ƒ‰ํ•  ๋•Œ, ๋…ธ๋“œ๋ฅผ ์ด๋™ํ•  ๋•Œ๋งˆ๋‹ค ๊ฒฝ์šฐ์˜ ์ˆ˜๊ฐ€ ์ ˆ๋ฐ˜์œผ๋กœ ์ค„์–ด๋“ ๋‹ค.
  • ๋งค๋ฒˆ ์ˆซ์ž๋ฅผ ์ œ์‹œํ•  ๋•Œ๋งˆ๋‹ค ๊ฒฝ์šฐ์˜ ์ˆ˜๊ฐ€ ์ ˆ๋ฐ˜์ด ์ค„์–ด๋“ค๊ธฐ ๋•Œ๋ฌธ์— ์ตœ์•…์˜ ๊ฒฝ์šฐ์—๋„ 7๋ฒˆ์ด๋ฉด ์›ํ•˜๋Š” ์ˆซ์ž๋ฅผ ์ฐพ์•„๋‚ผ ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค.
  • BST์˜ ๊ฐ’ ํƒ์ƒ‰ ๋˜ํ•œ ์ด์™€๊ฐ™์€ ๋กœ์ง์œผ๋กœ, O(log n)์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„๋ฅผ ๊ฐ€์ง„ ์•Œ๊ณ ๋ฆฌ์ฆ˜(ํƒ์ƒ‰๊ธฐ๋ฒ•)์ด๋‹ค.

O(log n)์€ logarithmic complexity๋ผ๊ณ  ๋ถ€๋ฅด๋ฉฐ Big-Oํ‘œ๊ธฐ๋ฒ•์ค‘ O(1) ๋‹ค์Œ์œผ๋กœ ๋น ๋ฅธ ์‹œ๊ฐ„ ๋ณต์žก๋„๋ฅผ ๊ฐ€์ง„๋‹ค.

BST์—์„  ์›ํ•˜๋Š” ๊ฐ’์„ ํƒ์ƒ‰ํ•  ๋•Œ, ๋…ธ๋“œ๋ฅผ ์ด๋™ํ•  ๋•Œ๋งˆ๋‹ค ๊ฒฝ์šฐ์˜ ์ˆ˜๊ฐ€ ์ ˆ๋ฐ˜์œผ๋กœ ์ค„์–ด๋“ ๋‹ค.

ex) up & down ๊ฒŒ์ž„

  1. 1~100 ์ค‘ ํ•˜๋‚˜์˜ ์ˆซ์ž๋ฅผ ํ”Œ๋ ˆ์ด์–ด1์ด ๊ณ ๋ฅธ๋‹ค (30์„ ๊ณจ๋ž๋‹ค๊ณ  ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค).
  2. 50(๊ฐ€์šด๋ฐ) ์ˆซ์ž๋ฅผ ์ œ์‹œํ•˜๋ฉด 50๋ณด๋‹ค ์ž‘์œผ๋ฏ€๋กœ down์„ ์™ธ์นœ๋‹ค.
  3. 1~50์ค‘์˜ ํ•˜๋‚˜์˜ ์ˆซ์ž์ด๋ฏ€๋กœ ๋˜๋‹ค์‹œ ๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ ์ ˆ๋ฐ˜์œผ๋กœ ์ค„์ด๊ธฐ ์œ„ํ•ด 25๋ฅผ ์ œ์‹œํ•œ๋‹ค.
  4. 25๋ณด๋‹ค ํฌ๋ฏ€๋กœ up์„ ์™ธ์นœ๋‹ค.
  5. ๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ ๊ณ„์† ์ ˆ๋ฐ˜์œผ๋กœ ์ค„์—ฌ๋‚˜๊ฐ€๋ฉฐ ์ •๋‹ต์„ ์ฐพ๋Š”๋‹ค.

๋งค๋ฒˆ ์ˆซ์ž๋ฅผ ์ œ์‹œํ•  ๋•Œ๋งˆ๋‹ค ๊ฒฝ์šฐ์˜ ์ˆ˜๊ฐ€ ์ ˆ๋ฐ˜์ด ์ค„์–ด๋“ค๊ธฐ ๋•Œ๋ฌธ์— ์ตœ์•…์˜ ๊ฒฝ์šฐ์—๋„ 7๋ฒˆ์ด๋ฉด ์›ํ•˜๋Š” ์ˆซ์ž๋ฅผ ์ฐพ์•„๋‚ผ ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค.

BST์˜ ๊ฐ’ ํƒ์ƒ‰๋„ ๊ฐ™์€ ๋กœ์ง์œผ๋กœ O(log n)์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„๋ฅผ ๊ฐ€์ง„ ์•Œ๊ณ ๋ฆฌ์ฆ˜(ํƒ์ƒ‰๊ธฐ๋ฒ•)์ด๋‹ค.

 


 

O(n2)์€ 2์ฐจ ๋ณต์žก๋„(quadratic complexity)๋ผ๊ณ  ๋ถ€๋ฅด๋ฉฐ, ์ž…๋ ฅ๊ฐ’์ด ์ฆ๊ฐ€ํ•จ์— ๋”ฐ๋ผ ์‹œ๊ฐ„์ด n์˜ ์ œ๊ณฑ์ˆ˜์˜ ๋น„์œจ๋กœ ์ฆ๊ฐ€ํ•˜๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค.

  • ์˜ˆ๋ฅผ ๋“ค์–ด ์ž…๋ ฅ๊ฐ’์ด 1์ผ ๊ฒฝ์šฐ 1์ดˆ๊ฐ€ ๊ฑธ๋ฆฌ๋˜ ์•Œ๊ณ ๋ฆฌ์ฆ˜์— 5๋ผ๋Š” ๊ฐ’์„ ์ฃผ์—ˆ๋”๋‹ˆ 25์ดˆ๊ฐ€ ๊ฑธ๋ฆฌ๊ฒŒ ๋œ๋‹ค๋ฉด, ์ด ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„๋Š” O(n2)๋ผ๊ณ  ํ‘œํ˜„ํ•œ๋‹ค.

function O_quadratic_algorithm(n) {
	for (let i = 0; i < n; i++) {
		for (let j = 0; j < n; j++) {
		// do something for 1 second
		}
	}
}

function another_O_quadratic_algorithm(n) {
	for (let i = 0; i < n; i++) {
		for (let j = 0; j < n; j++) {
			for (let k = 0; k < n; k++) {
			// do something for 1 second
			}
		}
	}
}

[์ฝ”๋“œ] O(n2)์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„๋ฅผ ๊ฐ€์ง€๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์˜ˆ์‹œ

2n, 5n ์„ ๋ชจ๋‘ O(n)์ด๋ผ๊ณ  ํ‘œํ˜„ํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ, n3๊ณผ n5 ๋„ ๋ชจ๋‘ O(n2)๋กœ ํ‘œ๊ธฐํ•œ๋‹ค.

n์ด ์ปค์ง€๋ฉด ์ปค์งˆ์ˆ˜๋ก ์ง€์ˆ˜๊ฐ€ ์ฃผ๋Š” ์˜ํ–ฅ๋ ฅ์ด ์ ์  ํ‡ด์ƒ‰๋˜๊ธฐ ๋•Œ๋ฌธ์— ์ด๋ ‡๊ฒŒ ํ‘œ๊ธฐํ•œ๋‹ค.

 


 

 

O(2n)์€ ๊ธฐํ•˜๊ธ‰์ˆ˜์  ๋ณต์žก๋„(exponential complexity)๋ผ๊ณ  ๋ถ€๋ฅด๋ฉฐ, Big-O ํ‘œ๊ธฐ๋ฒ• ์ค‘ ๊ฐ€์žฅ ๋А๋ฆฐ ์‹œ๊ฐ„ ๋ณต์žก๋„๋ฅผ ๊ฐ€์ง„๋‹ค.

  • ์žฌ๊ท€๋กœ ๊ตฌํ˜„ํ•˜๋Š” ํ”ผ๋ณด๋‚˜์น˜ ์ˆ˜์—ด์€ O(2n)์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„๋ฅผ ๊ฐ€์ง„ ๋Œ€ํ‘œ์ ์ธ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋‹ค.

 

O(2n)์€ exponential complexity๋ผ๊ณ  ๋ถ€๋ฅด๋ฉฐ Big-O ํ‘œ๊ธฐ๋ฒ• ์ค‘ ๊ฐ€์žฅ ๋А๋ฆฐ ์‹œ๊ฐ„ ๋ณต์žก๋„๋ฅผ ๊ฐ€๋‹ค.

๊ตฌํ˜„ํ•œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„๊ฐ€ O(2n)์ด๋ผ๋ฉด ๋‹ค๋ฅธ ์ ‘๊ทผ ๋ฐฉ์‹์„ ๊ณ ๋ฏผํ•ด ๋ณด๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.

function fibonacci(n) {
	if (n <= 1) {
		return 1;
	}
	return fibonacci(n - 1) + fibonacci(n - 2);
}

์žฌ๊ท€๋กœ ๊ตฌํ˜„ํ•˜๋Š” ํ”ผ๋ณด๋‚˜์น˜ ์ˆ˜์—ด์€ O(2n)์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„๋ฅผ ๊ฐ€์ง„ ๋Œ€ํ‘œ์ ์ธ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋‹ค.

๋ธŒ๋ผ์šฐ์ € ๊ฐœ๋ฐœ์ž ์ฐฝ์—์„œ n์„ 40์œผ๋กœ ๋‘์–ด๋„ ์ˆ˜์ดˆ๊ฐ€ ๊ฑธ๋ฆฌ๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, n์ด 100 ์ด์ƒ์ด๋ฉด ํ‰์ƒ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ˜ํ™˜๋ฐ›์ง€ ๋ชปํ•  ์ˆ˜๋„ ์žˆ๋‹ค.

 

๐ŸŒผ ๋ฐ์ดํ„ฐ ํฌ๊ธฐ์— ๋”ฐ๋ฅธ ์‹œ๊ฐ„ ๋ณต์žก๋„

๋ฐ์ดํ„ฐ ํฌ๊ธฐ ์ œํ•œ์˜ˆ์ƒ๋˜๋Š”์‹œ๊ฐ„ ๋ณต์žก๋„

n ≤ 1,000,000 O(n) or O (logn)
n ≤ 10,000 O(n2)
n ≤ 500 O(n3)

 

 

๐ŸŒผ ์ง€์ˆ˜ ์•Œ๊ณ ๋ฆฌ์ฆ˜

๋ฌธ์ œ ํ•œ ๊ฐ€์ง€๋ฅผ ํ˜•์‹์ ์œผ๋กœ ์ค„์—ฌ ๋‚˜๊ฐ€ 2๊ฐœ ํ˜น์€ ๋” ๋งŽ์€ ๋ถ€๋ถ„์˜ ๋” ์ž‘์€ ์‚ฌ์ด์ฆˆ์˜ ๋ฌธ์ œ๋“ค๋กœ ๋งŒ๋“œ๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋‹ค.
์ง€์ˆ˜ ํƒ์ƒ‰ ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ๊ฒฝ์šฐ๋Š” ์žฌ๊ท€ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์ž…๋ ฅ์œผ๋กœ ์ฃผ์–ด์ง€๋Š” ์ˆซ์ž์˜ ๊ฐœ์ˆ˜์— ๋”ฐ๋ผ ์ˆ˜ํ–‰์‹œ๊ฐ„์ด ๋‹ฌ๋ผ์ง„๋‹ค. 

O(2n) ๋˜๋Š” O(rn) :  ์ง€์ˆ˜ ์‹œ๊ฐ„ ์•Œ๊ณ ๋ฆฌ์ฆ˜ (exponential time algorithm)
     - n์ด ํ•˜๋‚˜ ์ฆ๊ฐ€ํ•  ๋•Œ ๋งˆ๋‹ค, ๊ฑธ๋ฆฌ๋Š” ์‹œ๊ฐ„์ด ๊ทธ์ „๋ณด๋‹ค 2๋ฐฐ ๋˜๋Š” r๋ฐฐ๋กœ ๊ฑธ๋ฆฌ๋Š” ๋งค์šฐ ๋‚˜์œ ์‚ฌ๋ก€ 

  ใ…‡ O(n!)  :  ๊ณ„์Šน ์‹œ๊ฐ„ (factorial time algorithm)
     - ์ง€์ˆ˜ ์‹œ๊ฐ„ ๋ณด๋‹ค ๋” ๋งŽ์ด ๊ฑธ๋ฆผ (๋” ๋น ๋ฅด๊ฒŒ ์ฆ๊ฐ€ํ•จ)
     - ๋”ฐ๋ผ์„œ, ์ดˆ ์ง€์ˆ˜ ์‹œ๊ฐ„(super-exponential)์ด๋ผ๊ณ ๋„ ํ•จ
 

 

์ฐธ๊ณ ์ž๋ฃŒ

https://hanamon.kr/%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98-time-complexity-%EC%8B%9C%EA%B0%84-%EB%B3%B5%EC%9E%A1%EB%8F%84/