๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Programming/C language

[Algorithm] Time complexity (์‹œ๊ฐ„๋ณต์žก๋„)

by Dowon Kang 2024. 1. 21.

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

์ข€ ๋” ๊ตฌ์ฒด์ ์œผ๋กœ๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ์ž…๋ ฅ ํฌ๊ธฐ์— ๋”ฐ๋ผ ์†Œ์š”๋˜๋Š” ๊ณ„์‚ฐ ์‹œ๊ฐ„์˜ ์ฆ๊ฐ€ ์ •๋„๋ฅผ ํ‘œํ˜„ํ•ฉ๋‹ˆ๋‹ค. ์‹œ๊ฐ„ ๋ณต์žก๋„๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ํšจ์œจ์„ฑ์„ ๋ถ„์„ํ•˜๊ณ  ๋‹ค๋ฅธ ์•Œ๊ณ ๋ฆฌ์ฆ˜๊ณผ ๋น„๊ตํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

 

ํ”„๋กœ๊ทธ๋ž˜๋ฐ์—์„œ ์‹œ๊ฐ„๋ณต์žก๋„๋Š” ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ ์ž‘์„ฑํ•œ ์ฝ”๋“œ์˜ Running time์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. 

์œ„ 3์ค„ ์งœ๋ฆฌ ์ฝ”๋“œ์˜ ์†Œ์š” ์‹œ๊ฐ„์€ 7ns ์ž…๋‹ˆ๋‹ค. ์ข‹์€ ํ”„๋กœ๊ทธ๋žจ์ด๋ผ๋ฉด ์ค€์ˆ˜ํ•œ ์†๋„์™€ ์ •ํ™•์„ฑ์ด ๋’ท๋ฐ›์นจ๋˜์–ด์•ผ ํ•˜๊ธฐ๋•Œ๋ฌธ์— ํ”„๋กœ๊ทธ๋žจ์˜ ์†Œ์š” ์‹œ๊ฐ„์ด ์ค‘์š”ํ•˜๋‹ค๊ณ  ๋งํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 

๊ทธ๋Ÿผ ๋ฐ˜๋ณต๋ฌธ์˜ ๊ฒฝ์šฐ๋Š” ์–ด๋–จ๊นŒ์š”?

  • 'Outer loop'์˜ ๊ฒฝ์šฐ 5๋ฒˆ  โ†’  n๋ฒˆ์ผ ๊ฒฝ์šฐ n๋ฒˆ
  • 'Inner loop'์˜ ๊ฒฝ์šฐ 25๋ฒˆ โ†’  n๋ฒˆ์ผ ๊ฒฝ์šฐ n^2๋ฒˆ 

= 5n^2 + 3n 

 

์ด๋ ‡๊ฒŒ ์ด ์‹คํ–‰์‹œ๊ฐ„์„ ์ž…๋ ฅํฌ๊ธฐ n์— ๋Œ€ํ•œ ํ•จ์ˆ˜๋กœ ํ‘œํ˜„ํ•œ ๊ฒฐ๊ณผ๋ฅผ ์‹œ๊ฐ„๋ณต์žก๋„๋ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋•Œ, n์€ ์ž…๋ ฅ ๋ฐ์ดํ„ฐ์˜ ํฌ๊ธฐ์ž…๋‹ˆ๋‹ค. ๋ณต์žกํ•œ ์‹œ๊ฐ„๋ณต์žก๋„์˜ ํ‘œํ˜„์„ ๊ฐ„๋‹จํžˆ ์•Œ์•„๋ณด๊ธฐ ์œ„ํ•ด์„œ ํ•จ์ˆ˜์˜ ์ตœ๊ณ ์ฐจํ•ญ์œผ๋กœ๋งŒ ์‹œ๊ฐ„๋ณต์žก๋„๋ฅผ ํ‘œ๊ธฐํ•œ ๊ฒƒ์„ Big O ํ‘œ๊ธฐ๋ฒ•์ด๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค, ์ด๋Š” ์ƒํ•œ์„ ๋‚˜ํƒ€๋‚ด๋ฉฐ ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ์‹คํ–‰ ์‹œ๊ฐ„์ด ์–ผ๋งˆ๋‚˜ ๋น ๋ฅด๊ฒŒ ์ฆ๊ฐ€ํ•˜๋Š”์ง€๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.

 

 

์˜ˆ๋ฅผ ๋“ค์–ด, O(n), O(n log n), O(n^2)์€ ๊ฐ๊ฐ ์„ ํ˜• ์‹œ๊ฐ„, ๋กœ๊ทธ ์„ ํ˜• ์‹œ๊ฐ„, ์ด์ฐจ ์‹œ๊ฐ„ ๋ณต์žก๋„๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. ์ด๋Š” ์ž…๋ ฅ ํฌ๊ธฐ n์ด ์ปค์งˆ ๋•Œ ๊ฐ๊ฐ ์„ ํ˜•์ ์œผ๋กœ, ๋กœ๊ทธ ์„ ํ˜•์ ์œผ๋กœ, ์ œ๊ณฑ์ ์œผ๋กœ ์ฆ๊ฐ€ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

 

์‹œ๊ฐ„ ๋ณต์žก๋„๋ฅผ ํ‰๊ฐ€ํ•  ๋•Œ๋Š” ์ตœ์•… ์‹œ๊ฐ„ ๋ณต์žก๋„, ํ‰๊ท  ์‹œ๊ฐ„ ๋ณต์žก๋„, ์ตœ์„  ์‹œ๊ฐ„ ๋ณต์žก๋„ ๋“ฑ ๋‹ค์–‘ํ•œ ๊ฒฝ์šฐ๋ฅผ ๊ณ ๋ คํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฃผ๋กœ ์ตœ์•… ์‹œ๊ฐ„ ๋ณต์žก๋„๊ฐ€ ๊ฐ€์žฅ ์ค‘์š”ํ•˜๊ฒŒ ๋‹ค๋ฃจ์–ด์ง€๋ฉฐ, ์ด๋Š” ์ตœ์•…์˜ ์ƒํ™ฉ์—์„œ๋„ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ์–ด๋Š ์ •๋„์˜ ์„ฑ๋Šฅ์„ ๋ณด์žฅํ•˜๋Š”์ง€๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.

 

 

 


Time complexity is the computational complexity that describes the amount of computer time it takes to run an algorithm. 

 

Big O Notation is a tool used to describe the time complexity of algorithms. It calculates the time taken to run an algorithm as the input grows. 

 

'Programming > C language' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

4 Constant  (1) 2024.01.23
3 Variable  (0) 2024.01.22
2 Hello world  (0) 2024.01.22
1 C language - Why do we learn it  (0) 2024.01.22
[์ž๋ฃŒ๊ตฌ์กฐ] Data structure  (0) 2024.01.07

๋Œ“๊ธ€