def print_items(a, b) : for i in range(a): print(i) for j in range(b): print(j)
- ์ด์ ์ ๋ดค๋ O(2n)์ ๊ฒฝ์ฐ์๋ ๋ค๋ฅด๊ฒ, ์์ ํจ์๋ ๋ ๊ฐ์ ํ๋ผ๋ฉํฐ๋ฅผ ๊ฐ์ง๊ณ ์๊ธฐ ๋๋ฌธ์, ์์ ๊ฐ์ ๊ฒฝ์ฐ๋ O(a + b)๋ก ์ต๋ํ ๋จ์ํ ํ ์ ์๋ค.
def print_items(a, b) : for i in range(a): for j in range(b): print(i, j)
- ์ ๊ฐ์ ๊ฒฝ์ฐ๋, ์๋ก ๋ค๋ฅธ ํ๋ผ๋ฉํฐ๊ฐ ๋ ๊ฐ ์ฃผ์ด์ก๊ธฐ์, O(n^2)๋ก ํ์ํ๋๊ฒ ์๋๋ผ O(a * b)๋ก ๋จ์ํ ํด์ผ ํ๋ค.
๐ก (๋ฆฌ์คํธ) ์ถ๊ฐ, ์ ๊ฑฐ์์ Big O
- my_list = [11, 3, 23, 7]
- my_list.append(15) -> 4๋ฒ ์ธ๋ฑ์ค์ 15๊ฐ ์ถ๊ฐ๋จ. ์ฆ O(1)
- my_list.pop() -> 4๋ฒ ์ธ๋ฑ์ค์๋ 15๊ฐ ์ ๊ฑฐ๋จ. ์ฆ O(1)
- my_list.pop(0) -> 0๋ฒ ์ธ๋ฑ์ค์ธ 11์ด ์ ๊ฑฐ๋จ, ๊ทธ๋ฌ๋ ์ด ๊ฒฝ์ฐ ํด๋ฐฉ ๋ฐฐ์ด์๋ 0๋ฒ ์ธ๋ฑ์ค๊ฐ ๋น์ด์๊ธฐ์ ๋๋จธ์ง ์ธ๋ฑ์ค๋ค์ ๋ค์ ์ธ๋ฑ์ฑํด์ฃผ์ด์ผ ํ๋ค. ์ฆ O(n)
- my_list.insert(0, 11) -> 0๋ฒ ์ธ๋ฑ์ค์ 11์ด ์ถ๊ฐ๋จ, ๊ทธ๋ฌ๋ ์ด ๊ฒฝ์ฐ ์ด๋ฏธ 0๋ฒ ์ธ๋ฑ์ค์ ๋ค๋ฅธ ๊ฐ์ด ์๊ธฐ์ ์ธ๋ฑ์ค๋ค์ ๋ค์ ์ธ๋ฑ์ฑํด์ฃผ์ด์ผ ํ๋ค. ์ฆ O(n)
- my_list.insert(1, 'hi') -> 1๋ฒ ์ธ๋ฑ์ค์ 'hi'๊ฐ ์ถ๊ฐ๋๊ณ , ๋๋จธ์ง ์ธ๋ฑ์ค๋ค์ ๋ค์ ์ธ๋ฑ์ฑํด์ฃผ์ด์ผ ํ๋ค. ์ฆ O(n)
๐ก (๋ฆฌ์คํธ) ๋ฆฌ์คํธ ๋ด ํญ๋ชฉ์ ๊ฐ์ผ๋ก ํ์์์ Big O
- my_list = [11, 3, 23, 7]
- ๋ฐฐ์ด์ iterateํด์ ๊ฐ์ ์ฐพ์ ๊ฒฝ์ฐ, ๋ฐฐ์ด์ ํฌ๊ธฐ๋งํผ ๋์์ผ ํ๋ค. ๊ทธ๋ฌ๋ฏ๋ก O(n)
- ์ธ๋ฑ์ค๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๊ฐ์ ์ฐพ์ ๊ฒฝ์ฐ๋ ๋ฉ๋ชจ๋ฆฌ๋ก ๋ฐ๋ก ์ ๊ทผ์ด ๊ฐ๋ฅํ๋ฏ๋ก, O(1)
๐ก n = 100 ์ผ๋ ๊ฐ Big O ์์๋ณ ์์ ์๊ฐ
- O(1) = 1
- O(log n) = approx 7
- O(n) = 100
- O(n^2) = 10,000
๐ก n = 1,000 ์ผ๋ ๊ฐ Big O ์์๋ณ ์์ ์๊ฐ
- O(1) = 1
- O(log n) = approx 10
- O(n) = 1,000
- O(n^2) = 1,000,000
๐ก Big O ์์๋ณ ์ฉ์ด ์ ๋ฆฌ
- O(1) = constant
- O(log n) = divide and conquer
- O(n) = proportional
- O(n^2) = loop within a loop
๐ฃ๏ธ Big O, ์๊ฐ/๊ณต๊ฐ ๋ณต์ก๋, ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ์ ๋ํด ์ ๋ฆฌ๊ฐ ์ ๋์ด ์๋ ์น์ฌ์ดํธ
https://www.bigocheatsheet.com/