๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
โœ’๏ธ Coding Test Preparation/Algorithm & Other Concepts

[Algorithm & Other Concepts] ๋ณต์žก๋„์™€ ๋น…์˜ค(Big-O) ํ‘œ๊ธฐ๋ฒ•

by A Lim Han 2023. 6. 28.

๐Ÿฆ€ ๋ณต์žก๋„

๋ณต์žก๋„
์‹œ๊ฐ„ ๋ณต์žก๋„ ๊ณต๊ฐ„ ๋ณต์žก๋„
์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ˆ˜ํ–‰์— ํ•„์š”ํ•œ ์—ฐ์‚ฐ ํšŸ์ˆ˜ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ˆ˜ํ–‰์— ํ•„์š”ํ•œ ๋ฉ”๋ชจ๋ฆฌ ์–‘

-  ๋ณต์žก๋„๊ฐ€ ๋‚ฎ์„์ˆ˜๋ก ์ข‹์€ ์•Œ๊ณ ๋ฆฌ์ฆ˜

 

์‹œ๊ฐ„ ๋ณต์žก๋„์™€ ๊ณต๊ฐ„ ๋ณต์žก๋„๋Š” ๊ฑฐ๋ž˜ ๊ด€๊ณ„ ( = Trade-off )

 

Memoization ( = ๋ฉ”๋ชจ์ด์ œ์ด์…˜

๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ์–‘์„ ๋Š˜๋ฆผ์œผ๋กœ์จ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ˆ˜ํ–‰ ์‹œ๊ฐ„์„ ๋Œ€ํญ ์ค„์ด๋Š” ๋ฐฉ๋ฒ•

 


 

๐Ÿฆ€ ์‹œ๊ฐ„ ๋ณต์žก๋„๊ณผ ๋น…์˜ค(Big-O) ํ‘œ๊ธฐ๋ฒ•

๋น…์˜ค(Big-O) ํ‘œ๊ธฐ๋ฒ•
ํ•จ์ˆ˜์˜ ์ƒํ•œ์„ ๋‚˜ํƒ€๋‚ด๋Š” ํ‘œ๊ธฐ๋ฒ•

 

์‹œ๊ฐ„ ๋ณต์žก๋„ ==  O(N)

-  N  =  ์ฒ˜๋ฆฌํ•  ๋ฐ์ดํ„ฐ ๊ฐœ์ˆ˜ =  ์—ฐ์‚ฐ ํšŸ์ˆ˜

-  ์—ฌ๊ธฐ์„œ '์—ฐ์‚ฐ'์ด๋ž€ ์–ธ์–ด์—์„œ ์ง€์›ํ•˜๋Š” ๋น„๊ต, ์‚ฌ์น™ ์—ฐ์‚ฐ์„ ๋ชจ๋‘ ํฌํ•จํ•œ ๊ฐœ๋…

 

ex)

x = 1
y = 2

print(x + y)

-->  ํ•ด๋‹น ์˜ˆ์‹œ์—์„œ์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„๋Š” O(1)

 

๋น…์˜ค ํ‘œ๊ธฐ๋ฒ•์— ๋”ฐ๋ฅธ ๋ช…์นญ ์ •๋ฆฌ

๋น…์˜ค ํ‘œ๊ธฐ๋ฒ• ๋ช…์นญ
O(1) ์ƒ์ˆ˜ ์‹œ๊ฐ„
O(logN) ๋กœ๊ทธ ์‹œ๊ฐ„
O(N) ์„ ํ˜• ์‹œ๊ฐ„
O(NlogN) ๋กœ๊ทธ ์„ ํ˜• ์‹œ๊ฐ„
O(N^2) ์ด์ฐจ ์‹œ๊ฐ„
O(N^3) ์‚ผ์ฐจ ์‹œ๊ฐ„
O(2^n) ์ง€์ˆ˜ ์‹œ๊ฐ„

 


 

๐Ÿฆ€ ์‹œ๊ฐ„ ๋ฐ ๋ฉ”๋ชจ๋ฆฌ ์ธก์ •

import time

# ์ธก์ • ์‹œ์ž‘
start_time = time.time()

# ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ฝ”๋“œ

# ์ธก์ • ์ข…๋ฃŒ
end_time = time.time()

# ์ธก์ •ํ•œ ์‹œ๊ฐ„ ํ™•์ธ
print("์†Œ์š” ์‹œ๊ฐ„: ", end_time - start_time)