CodeGym /์ž๋ฐ” ์ฝ”์Šค /Python SELF KO /Big O ํ‘œ๊ธฐ๋ฒ•: ๊ธฐ๋ณธ ๊ฐœ๋…

Big O ํ‘œ๊ธฐ๋ฒ•: ๊ธฐ๋ณธ ๊ฐœ๋…

Python SELF KO
๋ ˆ๋ฒจ 61 , ๋ ˆ์Šจ 1
์‚ฌ์šฉ ๊ฐ€๋Šฅ

2.1 Big O ํ‘œ๊ธฐ๋ฒ•์˜ ์ •์˜.

Big O ํ‘œ๊ธฐ๋ฒ•์€ ์ˆ˜ํ•™์  ํ‘œ๊ธฐ๋ฒ•์ด์•ผ. ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ์‹คํ–‰ ์‹œ๊ฐ„์ด๋‚˜ ์ž์› ์†Œ๋น„๊ฐ€ ์ž…๋ ฅ ํฌ๊ธฐ์— ๋”ฐ๋ผ ์–ด๋–ป๊ฒŒ ๋ฐ”๋€Œ๋Š”์ง€๋ฅผ ์„ค๋ช…ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ผ. ์ด๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ํ™•์žฅ์„ฑ๊ณผ ๋ฐ์ดํ„ฐ ์–‘์ด ๋Š˜์–ด๋‚  ๋•Œ ์„ฑ๋Šฅ์ด ์–ด๋–ป๊ฒŒ ๋ณ€ํ•˜๋Š”์ง€๋ฅผ ์ธก์ •ํ•˜๋Š”๋ฐ ๋„์›€์„ ์ค˜.

Big O๋Š” ์ƒ์ˆ˜์™€ ๋œ ์ค‘์š”ํ•œ ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ๋ฌด์‹œํ•˜๋ฉด์„œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ๊ฐ€์žฅ ์ค‘์š”ํ•œ ๋ถ€๋ถ„์— ์ง‘์ค‘ํ•˜์—ฌ ์žฅ๊ธฐ์ ์ธ ๋™์ž‘์„ ๋ถ„์„ํ•˜๋Š” ๋ฐ ์ค‘์ ์„ ๋‘์ง€.

๊ธฐ๋ณธ ํ‘œ๊ธฐ๋ฒ•:

O(1) โ€” ์ƒ์ˆ˜ ๋ณต์žก๋„:

  • ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์‹คํ–‰ ์‹œ๊ฐ„์ด ์ž…๋ ฅ ๋ฐ์ดํ„ฐ ํฌ๊ธฐ์— ์˜ํ–ฅ๋ฐ›์ง€ ์•Š์•„.
  • ์˜ˆ: ๋ฐฐ์—ด ์š”์†Œ๋ฅผ ์ธ๋ฑ์Šค๋กœ ์ ‘๊ทผ.

O(n) โ€” ์„ ํ˜• ๋ณต์žก๋„:

  • ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์‹คํ–‰ ์‹œ๊ฐ„์ด ์ž…๋ ฅ ๋ฐ์ดํ„ฐ ํฌ๊ธฐ์— ๋”ฐ๋ผ ์„ ํ˜•์ ์œผ๋กœ ๋ณ€ํ•ด.
  • ์˜ˆ: ๋ฐฐ์—ด์˜ ๋ชจ๋“  ์š”์†Œ๋ฅผ ๊ฐ„๋‹จํžˆ ์ˆœํšŒ.

O(log n) โ€” ๋กœ๊ทธ ๋ณต์žก๋„:

  • ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์‹คํ–‰ ์‹œ๊ฐ„์ด ์ž…๋ ฅ ๋ฐ์ดํ„ฐ ํฌ๊ธฐ ์ฆ๊ฐ€์— ๋”ฐ๋ผ ๋กœ๊ทธ ๋‹จ์œ„๋กœ ๋Š˜์–ด๋‚˜.
  • ์˜ˆ: ์ •๋ ฌ๋œ ๋ฐฐ์—ด์—์„œ ์ด์ง„ ํƒ์ƒ‰.

O(n^2) โ€” ์ด์ฐจ ๋ณต์žก๋„:

  • ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์‹คํ–‰ ์‹œ๊ฐ„์ด ์ž…๋ ฅ ๋ฐ์ดํ„ฐ ํฌ๊ธฐ์— ๋”ฐ๋ผ ์ œ๊ณฑ์œผ๋กœ ์ฆ๊ฐ€ํ•ด.
  • ์˜ˆ: ๋ฒ„๋ธ” ์ •๋ ฌ, ์‚ฝ์ž… ์ •๋ ฌ.

O(2^n) โ€” ์ง€์ˆ˜ ๋ณต์žก๋„:

  • ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์‹คํ–‰ ์‹œ๊ฐ„์ด ์ž…๋ ฅ ๋ฐ์ดํ„ฐ ํฌ๊ธฐ์— ๋”ฐ๋ผ ์ง€์ˆ˜ ๋‹จ์œ„๋กœ ๋Š˜์–ด๋‚˜.
  • ์˜ˆ: ์™„์ „ ํƒ์ƒ‰์œผ๋กœ ๋ฐฐ๋‚ญ ๋ฌธ์ œ ํ•ด๊ฒฐ.

2.2 Big O ํ‘œ๊ธฐ๋ฒ•์˜ ํ•ด์„.

Big O ํ‘œ๊ธฐ๋ฒ•์„ ์–ด๋–ป๊ฒŒ ํ•ด์„ํ•˜๊ณ  ์‚ฌ์šฉํ• ๊นŒ?

์ƒ์ˆ˜์™€ ๋œ ์ค‘์š”ํ•œ ๊ตฌ์„ฑ ์š”์†Œ ๋ฌด์‹œ:

Big O๋Š” ํ•จ์ˆ˜์˜ ์„ฑ์žฅ ์–‘์ƒ์„ ์„ค๋ช…ํ•˜๋ฉฐ, ์ƒ์ˆ˜์™€ ๋œ ์ค‘์š”ํ•œ ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ๋ฌด์‹œํ•ด. ์˜ˆ๋ฅผ ๋“ค์–ด, O(2n)๊ณผ O(3n)์€ O(n)์œผ๋กœ ํ•ด์„๋ผ.

์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋น„๊ต:

Big O๋ฅผ ํ†ตํ•ด ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๋น„๋Œ€์นญ ํšจ์œจ์„ฑ์œผ๋กœ ๋น„๊ตํ•  ์ˆ˜ ์žˆ์–ด. ์˜ˆ๋ฅผ ๋“ค์–ด, O(n log n) ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ํฐ ๋ฐ์ดํ„ฐ์˜ ๊ฒฝ์šฐ O(n^2) ์•Œ๊ณ ๋ฆฌ์ฆ˜๋ณด๋‹ค ๋” ํšจ์œจ์ ์ด์•ผ.

์ตœ์•…์˜ ๊ฒฝ์šฐ ๋ถ„์„:

Big O๋Š” ๋ณดํ†ต ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ์ตœ์•…์˜ ๊ฒฝ์šฐ ์‹คํ–‰ ์‹œ๊ฐ„์„ ๋ถ„์„ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ผ, ์ตœ๋Œ€ ๋ณต์žก์„ฑ์„ ํ‰๊ฐ€ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ์ง€.

์ƒ์ˆ˜ ๋ฌด์‹œ.

์ƒ์ˆ˜์™€ ๋œ ์ค‘์š”ํ•œ ๊ตฌ์„ฑ ์š”์†Œ ๋ฌด์‹œ

์˜ˆ์ œ 1:

๋‘ ํ•จ์ˆ˜๋ฅผ ๊ณ ๋ คํ•ด๋ณด์ž:

  • f(n) = 3n + 2
  • g(n) = 5n + 1

๋‘ ํ•จ์ˆ˜ ๋ชจ๋‘ ์„ ํ˜• ๋ณต์žก๋„๋ฅผ ๊ฐ€์ ธ, ๊ฐ ํ•จ์ˆ˜์˜ ์ง€๋ฐฐ์ ์ธ ํ•ญ์€ n์ด๋‹ˆ๊นŒ. ๋”ฐ๋ผ์„œ ๋‘ ํ•จ์ˆ˜๋Š” ์ƒ์ˆ˜์™€ ์ถ”๊ฐ€ ํ•ญ์˜ ์ฐจ์ด์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  O(n)์œผ๋กœ ํ•ด์„๋ผ.

์˜ˆ์ œ 2:

๋‘ ํ•จ์ˆ˜๋ฅผ ๊ณ ๋ คํ•ด๋ณด์ž:

  • f(n) = n^2 + 3n + 4
  • g(n) = 2n^2 + n

๋‘ ํ•จ์ˆ˜ ๋ชจ๋‘ ์ด์ฐจ ๋ณต์žก๋„๋ฅผ ๊ฐ€์ ธ, ์ง€๋ฐฐ์ ์ธ ํ•ญ์€ n^2์ด๋‹ˆ๊นŒ. ๋‘ ํ‘œํ˜„์‹ ๋ชจ๋‘ ๋‹ค๋ฅธ ํ•ญ๊ณผ ๊ณ„์ˆ˜์˜ ์ฐจ์ด์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  O(n^2)์œผ๋กœ ํ•ด์„๋ผ.

2.3. ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋น„๊ต

1. ๋งค์šฐ ํฐ ๋ฐ์ดํ„ฐ ์—‘์„ธ์Šค์—์„œ์˜ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋น„๊ต

์˜ˆ์ œ 1:

  • ์•Œ๊ณ ๋ฆฌ์ฆ˜ A๋Š” O(n^2)์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„๋ฅผ ๊ฐ€์ ธ.
  • ์•Œ๊ณ ๋ฆฌ์ฆ˜ B๋Š” O(n log n)์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„๋ฅผ ๊ฐ€์ ธ.

์ž‘์€ n ๊ฐ’์—์„œ๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜ A๊ฐ€ ์ƒ์ˆ˜ ๋•Œ๋ฌธ์ด๋ผ๋„ ๋” ๋น ๋ฅผ ์ˆ˜ ์žˆ์ง€๋งŒ, ํฐ n ๊ฐ’์—์„œ๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜ B๊ฐ€ ํ›จ์”ฌ ๋น ๋ฅด๊ฒŒ ๋˜์ง€, ๋กœ๊ทธ ์„ฑ์žฅ์ด๋‹ˆ๊นŒ, ์ด์ฐจ์ ์œผ๋กœ ์ฆ๊ฐ€ํ•˜์ง€ ์•Š์•„์„œ.

์˜ˆ์ œ 2:

  • ์•Œ๊ณ ๋ฆฌ์ฆ˜ X๋Š” O(n)์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„๋ฅผ ๊ฐ€์ ธ.
  • ์•Œ๊ณ ๋ฆฌ์ฆ˜ Y๋Š” O(1)์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„๋ฅผ ๊ฐ€์ ธ.

์•Œ๊ณ ๋ฆฌ์ฆ˜ Y๋Š” ํ•ญ์ƒ ๋” ๋น ๋ฅด๊ฒ ์ง€, ์ž…๋ ฅ ๋ฐ์ดํ„ฐ ํฌ๊ธฐ๊ฐ€ ์–ด๋–ค์ง€์™€ ์ƒ๊ด€์—†์ด, O(1)์ด๋ž€ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์‹คํ–‰ ์‹œ๊ฐ„์ด ์ž…๋ ฅ ๋ฐ์ดํ„ฐ ํฌ๊ธฐ์— ์˜ํ–ฅ์„ ๋ฐ›์ง€ ์•Š๋Š”๋‹ค๋Š” ๋œป์ด๋‹ˆ๊นŒ.

2. ์ตœ์•…์˜ ๊ฒฝ์šฐ ๋ถ„์„

์˜ˆ์ œ 1:

๋ฒ„๋ธ” ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ์ตœ์•…์˜ ๊ฒฝ์šฐ O(n^2)์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„๋ฅผ ๊ฐ€์ ธ, ๋ฐฐ์—ด์ด ์—ญ์ˆœ์œผ๋กœ ์ •๋ ฌ๋œ ๊ฒฝ์šฐ ๋ง์ด์•ผ. ์ด๋Š” ๋ฐฐ์—ด์˜ ๊ฐ ์š”์†Œ์— ๋Œ€ํ•ด ๋‹ค๋ฅธ ๋ชจ๋“  ์š”์†Œ์™€ ๋น„๊ตํ•˜๋ฉฐ, ํ•„์š”ํ•˜๋‹ค๋ฉด ๊ตํ™˜ํ•ด์•ผ ํ•œ๋‹ค๋Š” ์˜๋ฏธ์ง€.

์˜ˆ์ œ 2:

์ด์ง„ ํƒ์ƒ‰์€ ์ตœ์•…์˜ ๊ฒฝ์šฐ์—๋Š” O(log n)์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„๋ฅผ ๊ฐ€์ ธ. ์ด๋Š” ์ตœ์•…์˜ ๊ฒฝ์šฐ์—๋„ ์š”์†Œ๋ฅผ ์ฐพ๋Š” ๋ฐ ํ•„์š”ํ•œ ๋‹จ๊ณ„ ์ˆ˜๊ฐ€ ๋ฐฐ์—ด ํฌ๊ธฐ์— ๋”ฐ๋ผ ๋กœ๊ทธ์ ์œผ๋กœ ์ฆ๊ฐ€ํ•œ๋‹ค๋Š” ๋œป์ด๋‹ˆ๊นŒ, ์•„์ฃผ ํšจ์œจ์ ์ด์ง€.

3. ์„ฑ๋Šฅ๊ณผ ํ™•์žฅ์„ฑ์— ๋Œ€ํ•œ ์˜ํ–ฅ

์˜ˆ์ œ 1:

๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ๋‘ ๊ฐœ ์žˆ๋‹ค๋ฉด, ํ•˜๋‚˜๋Š” O(n^2)์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„, ๋˜ ๋‹ค๋ฅธ ํ•˜๋‚˜๋Š” O(n log n)์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„๋ฅผ ๊ฐ€์งˆ ๋•Œ, ๋ฐ์ดํ„ฐ ํฌ๊ธฐ๋ฅผ 1000๊ฐœ์—์„œ 10,000๊ฐœ๋กœ ์ฆ๊ฐ€์‹œํ‚ค๋ฉด ์„ฑ๋Šฅ ์ฐจ์ด๊ฐ€ ๋šœ๋ ทํ•˜๊ฒŒ ๋‚˜ํƒ€๋‚˜.

  • O(n^2) ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ 10,000๊ฐœ ์š”์†Œ์— ๋Œ€ํ•ด ๋Œ€๋žต 100,000,000๋ฒˆ์˜ ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ•  ๊ฑฐ์•ผ.
  • O(n log n) ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ 10,000๊ฐœ ์š”์†Œ์— ๋Œ€ํ•ด ์•ฝ 40,000๋ฒˆ์˜ ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ•  ๊ฑฐ์•ผ.

์˜ˆ์ œ 2:

O(2^n) ๋ณต์žก๋„๋ฅผ ๊ฐ€์ง„ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ƒ๊ฐํ•ด ๋ณด์ž. ์ž…๋ ฅ ๋ฐ์ดํ„ฐ ํฌ๊ธฐ๋ฅผ 10์—์„œ 20 ์š”์†Œ๋กœ ์ฆ๊ฐ€์‹œํ‚ค๋ฉด ์—ฐ์‚ฐ ์ˆ˜๊ฐ€ ์ง€์ˆ˜ ๋‹จ์œ„๋กœ ์ฆ๊ฐ€ํ•ด.

  • n = 10: 2^10 = 1024 ์—ฐ์‚ฐ.
  • n = 20: 2^20 = 1,048,576 ์—ฐ์‚ฐ.

์ด๋Š” ์ง€์ˆ˜ ๋ณต์žก๋„๊ฐ€ ํฐ n ๊ฐ’์—์„œ๋Š” ์‹คํ–‰ ๊ฐ€๋Šฅ์„ฑ์„ ๋น ๋ฅด๊ฒŒ ๋„˜์–ด์„œ๋ฒ„๋ฆฌ๊ฒŒ ๋˜๋Š” ๊ฑธ ๋ณด์—ฌ์ฃผ์ง€.

์ฝ”๋ฉ˜ํŠธ
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION