01. [์ž๋ฃŒ๊ตฌ์กฐ] ์ž๋ฃŒ๊ตฌ์กฐ์— ๋Œ€ํ•œ ๊ธฐ๋ณธ์ ์ธ ์ดํ•ด

2019. 6. 28. 08:02ใ†PROGRAMMING/์ž๋ฃŒ๊ตฌ์กฐ & ์•Œ๊ณ ๋ฆฌ์ฆ˜

 

์ž๋ฃŒ๊ตฌ์กฐ๋ž€ ๋ฌด์—‡์ธ๊ฐ€?

 

์ž๋ฃŒ๊ตฌ์กฐ : ๋ฐ์ดํ„ฐ์˜ ํ‘œํ˜„(๋ฐ์ดํ„ฐ์˜ ์ €์žฅ) ๋ฐฉ๋ฒ•

ex) int, float, vector, list, map, ์ •์  ๋ฐฐ์—ด, ๋™์  ๋ฐฐ์—ด ๋“ฑ๋“ฑ

 

์•Œ๊ณ ๋ฆฌ์ฆ˜ : ์ž๋ฃŒ๊ตฌ์กฐ๋กœ ํ‘œํ˜„๋œ ๋ฐ์ดํ„ฐ๋ฅผ ๋Œ€์ƒ์œผ๋กœ ํ•˜๋Š” '๋ฌธ์ œ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•'

 

[ ์ž๋ฃŒ๊ตฌ์กฐ์˜ ๋ถ„๋ฅ˜ ]

 

 

 


 

 

 

์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ์„ฑ๋Šฅ๋ถ„์„ ๋ฐฉ๋ฒ•

[ ์‹œ๊ฐ„ ๋ณต์žก๋„ (Time Complexity)์™€ ๊ณต๊ฐ„ ๋ณต์žก๋„ (Space Complexity) ]

 

 

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

"์–ด๋–ค ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ์–ด๋– ํ•œ ์ƒํ™ฉ์—์„œ ๋” ๋น ๋ฅด๊ณ  ๋˜ ๋Š๋ฆฐ๊ฐ€?"

 

๊ณต๊ฐ„ ๋ณต์žก๋„ (Sub)

"์–ด๋–ค ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ์–ด๋– ํ•œ ์ƒํ™ฉ์—์„œ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๋” ์ ๊ฒŒ ์“ฐ๊ณ  ๋งŽ์ด ์“ฐ๋‚˜?"

 

 

์•Œ๊ณ ๋ฆฌ์ฆ˜์˜  ์ˆ˜ํ–‰์†๋„๋ฅผ ํ‰๊ฐ€ํ•  ๋•Œ๋Š” ์—ฐ์‚ฐ์˜ ํšŸ์ˆ˜๋ฅผ ์„ธ๋Š” ๋ฐฉ๋ฒ•์„ ์ทจํ•œ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์ฒ˜๋ฆฌํ•ด์•ผ ํ•  ๋ฐ์ดํ„ฐ์˜ ์ˆ˜๊ฐ€ n์— ๋Œ€ํ•œ ์—ฐ์‚ฐํšŸ์ˆ˜์˜ ํ•จ์ˆ˜ T(n)์„ ๊ตฌ์„ฑํ•œ๋‹ค.

 

 

๋ฐ์ดํ„ฐ์˜ ์ˆ˜๊ฐ€ ์ ์€ ๊ฒฝ์šฐ์˜ ์ˆ˜ํ–‰ ์†๋„๋Š” ํฐ ์˜๋ฏธ๊ฐ€ ์—†๋‹ค.

๋ฐ์ดํ„ฐ์˜ ์ˆ˜์— ๋”ฐ๋ฅธ ์ˆ˜ํ–‰ ์†๋„์˜ ๋ณ€ํ™” ์ •๋„๋ฅผ ๊ธฐ์ค€์œผ๋กœ ํ•œ๋‹ค.

 

๋ฐ์ดํ„ฐ์˜ ์–‘์˜ ์ ์„ ๊ฒฝ์šฐ์—๋Š” A์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ๋” ๋น ๋ฅด์ง€๋งŒ,

๋ฐ์ดํ„ฐ์˜ ์ˆ˜๊ฐ€ ๊ธฐํ•˜๊ธ‰์ˆ˜์ ์œผ๋กœ ๋งŽ์•„์งˆ ๊ฒฝ์šฐ B ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ํ›จ์”ฌ ๋” ๋นจ๋ผ์ง„๋‹ค.

์ˆ˜ํ–‰ ์†๋„์˜ ๋ณ€ํ™” ์ •๋„๋ฅผ ๋ดค์„ ๋•Œ, B ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ๋” ๋น ๋ฅธ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋ผ ํ•  ์ˆ˜ ์žˆ๊ฒ ๋‹ค.

 

 

 


 

 

๋น…-์˜ค ํ‘œ๊ธฐ๋ฒ• (Big - Oh Notation)

 

T(n)์—์„œ ์‹ค์ œ๋กœ ์˜ํ–ฅ๋ ฅ์„ ๋ผ์น˜๋Š” ๋ถ€๋ถ„๋งŒ์„ ๋”ฐ์ง€๋Š” ๊ฒƒ.

 

T(n) = n^2 + 2n + 1

n์ด ์ฆ๊ฐ€ํ•จ์— ๋”ฐ๋ผ 2n + 1์ด ๋ฏธ์น˜๋Š” ์˜ํ–ฅ์€ ๋ฏธ๋ฏธํ•ด์ง€๋ฏ€๋กœ

๋‹ค์Œ๊ณผ ๊ฐ™์ด ๊ฐ„๋žตํ™” ํ•  ์ˆ˜ ์žˆ๋‹ค.

T(n) = n^2

O(n^2)

 

T(n) = n^2 + 2n + 1์˜ ๋น…์˜ค๋Š” n^2์ด๋ฉฐ,

์ด๋Š” n์˜ ์ฆ๊ฐ€ ๋ฐ ๊ฐ์†Œ์— ๋”ฐ๋ฅธ T(n)์˜ ๋ณ€ํ™” ์ •๋„๊ฐ€ n^2์˜ ํ˜•ํƒœ๋ฅผ ๋”์„ ์˜๋ฏธํ•œ๋‹ค.

 

 T(n) = n^2 + 2n + 9               -> O(n^2)

T(n) = n^4 + n^3 + n^2 + 1    -> O(n^4)

T(n) = 5n^3 + 2n + 1              -> O(n^3)

 

"T(n)์ด ๋‹คํ•ญ์‹์œผ๋กœ ํ‘œํ˜„๋  ๊ฒฝ์šฐ, ์ตœ๊ณ ์ฐจํ•ญ์˜ ์ฐจ์ˆ˜๊ฐ€ ๋น…-์˜ค๊ฐ€ ๋œ๋‹ค"

 

 

[ ๋Œ€ํ‘œ์ ์ธ ๋น…-์˜ค ]

 

1. O(l)

์ƒ์ˆ˜ํ˜• ๋น…-์˜ค.

์—ฐ์‚ฐํšŸ์ˆ˜๊ฐ€ ๊ณ ์ •์ธ ์œ ํ˜•์˜ ์•Œ๊ณ ๋ฆฌ์ฆ˜.

 

2. O(log n)

๋กœ๊ทธํ˜• ๋น…-์˜ค.

'๋ฐ์ดํ„ฐ ์ˆ˜์˜ ์ฆ๊ฐ€์œจ'์— ๋น„ํ•ด์„œ '์—ฐ์‚ฐํšŸ์ˆ˜์˜ ์ฆ๊ฐ€์œจ'์ด ํ›จ์”ฌ ๋‚ฎ์€ ์•Œ๊ณ ๋ฆฌ์ฆ˜.

 

 

3. O(n)

์„ ํ˜• ๋น…-์˜ค.

๋ฐ์ดํ„ฐ์˜ ์ˆ˜์™€ ์—ฐ์‚ฐํšŸ์ˆ˜๊ฐ€ ๋น„๋ก€ํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜.

 

 

4. O(n^2)

๋ฐ์ดํ„ฐ ์ˆ˜์˜ ์ œ๊ณฑ์— ํ•ด๋‹นํ•˜๋Š” ์—ฐ์‚ฐํšŸ์ˆ˜๋ฅผ ์š”๊ตฌํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜.

์ด์ค‘ ๋ฐ˜๋ณต๋ฌธ ๋‚ด์—์„œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์— ๊ด€๋ จ๋œ ์—ฐ์‚ฐ์ด ์ง„ํ–‰๋˜๋Š” ๊ฒฝ์šฐ ๋ฐœ์ƒ.

์ฆ‰, ์ค‘์ฒฉ๋œ ๋ฐ˜๋ณต๋ฌธ์˜ ์‚ฌ์šฉ์€ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋””์ž์ธ์—์„œ ๋ฐ”๋žŒ์งํ•˜์ง€ ๋ชปํ•จ.

 

 

5. O(n^3)

๋ฐ์ดํ„ฐ ์ˆ˜์˜ ์„ธ ์ œ๊ณฑ์— ํ•ด๋‹นํ•˜๋Š” ์—ฐ์‚ฐํšŸ์ˆ˜๋ฅผ ์š”๊ตฌํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜.

์‚ผ์ค‘ ์ค‘์ฒฉ๋œ ๋ฐ˜๋ณต๋ฌธ ๋‚ด์—์„œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์— ๊ด€๋ จ๋œ ์—ฐ์‚ฐ์ด ์ง„ํ–‰๋˜๋Š” ๊ฒฝ์šฐ.

์ ์šฉํ•˜๊ธฐ์—๋Š” ๋ฌด๋ฆฌ๊ฐ€ ์žˆ๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜.

 

 

์„ฑ๋Šฅ ํ‰๊ฐ€(์ˆ˜ํ–‰์‹œ๊ฐ„, ์—ฐ์‚ฐํšŸ์ˆ˜)๋ฅผ ํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

O(I) < O(log n) < O(n) < O(n log n) < O(n^2) < O(n^3)

(๋กœ๊ทธํ˜• ๋น…-์˜ค๊ฐ€ ์„ฑ๋Šฅ์ด ์ข‹์€ ์•Œ๊ณ ๋ฆฌ์ฆ˜)