Algorithm

μ‹œκ°„ λ³΅μž‘λ„

O'mil 2023. 11. 17. 15:46
728x90

πŸ“Œ μ‹œκ°„ λ³΅μž‘λ„

μ‹œκ°„ λ³΅μž‘λ„λ₯Ό κ³ λ €ν•œλ‹€λŠ” 것
: 'μž…λ ₯κ°’μ˜ 변화에 따라 연산을 μ‹€ν–‰ν•  λ•Œ, μ—°μ‚° νšŸμˆ˜μ— λΉ„ν•΄ μ‹œκ°„μ΄ μ–Όλ§ˆλ§ŒνΌ κ±Έλ¦¬λŠ”κ°€?'λΌλŠ” 말이닀.
  • μ‹œκ°„ λ³΅μž‘λ„λŠ” 주둜 λΉ…-였 ν‘œκΈ°λ²•μ„ μ‚¬μš©ν•΄ λ‚˜νƒ€λ‚Έλ‹€.

 

πŸ“Œ Big-O ν‘œκΈ°λ²•

1. O(1)

: O(1)λŠ” μΌμ •ν•œ λ³΅μž‘λ„(constant complexity)라고 ν•˜λ©°, μž…λ ₯값이 μ¦κ°€ν•˜λ”λΌλ„ μ‹œκ°„μ΄ λŠ˜μ–΄λ‚˜μ§€ μ•ŠλŠ”λ‹€.

  • μΌμ •ν•œ λ³΅μž‘λ„ -> μƒμˆ˜ν•­(0차식)

 

*μ˜ˆμ‹œ

MenOfPassion(A[], n) {
    i = ⌊n / 2⌋;
    return A[i]; # μ½”λ“œ1
}
  • μž…λ ₯이 아무리 컀져도 μ½”λ“œλ₯Ό 'λ”± 1번'만 싀행함

 

2. O(n)

: O(n)은 μ„ ν˜• λ³΅μž‘λ„(linear complexity)라고 λΆ€λ₯΄λ©°, μž…λ ₯값이 증가함에 따라 μ‹œκ°„ λ˜λŠ” 같은 λΉ„μœ¨λ‘œ μ¦κ°€ν•˜λŠ” 것을 μ˜λ―Έν•œλ‹€.

  • μ˜ˆμ‹œ: μž…λ ₯값이 1일 λ•Œ 1초의 μ‹œκ°„μ΄ 걸리고, μž…λ ₯값을 100λ°° 증가 μ‹œμΌ°μ„ λ•Œ 100μ΄ˆκ°€ κ±Έλ¦¬λŠ” μ•Œκ³ λ¦¬μ¦˜

 

3. O(log n)

: O(log n)은 둜그 λ³΅μž‘λ„(logarithmic complexity)라고 λΆ€λ₯΄λ©°, Big-O ν‘œκΈ°λ²• 쀑 O(1) λ‹€μŒμœΌλ‘œ λΉ λ₯Έ μ‹œκ°„ λ³΅μž‘λ„λ₯Ό κ°€μ§„λ‹€.

  • μ˜ˆμ‹œ: BST의 κ°’ 탐색
  • BST에선 μ›ν•˜λŠ” 값을 탐색할 λ•Œ, λ…Έλ“œλ₯Ό 이동할 λ•Œλ§ˆλ‹€ 경우의 μˆ˜κ°€ 절반으둜 쀄어든닀.

 

4. O(n2)

: O(n2)은 2μ°¨ λ³΅μž‘λ„(quadratic complexity)라고 λΆ€λ₯΄λ©°, μž…λ ₯값이 증가함에 따라 μ‹œκ°„μ΄ n의 제곱수의 λΉ„μœ¨λ‘œ μ¦κ°€ν•˜λŠ” 것을 μ˜λ―Έν•œλ‹€.

  • n의 제곱수의 λΉ„μœ¨λ‘œ 증가 -> 2차식

 

 

5. O(2n)

: O(2n)은 κΈ°ν•˜κΈ‰μˆ˜μ  λ³΅μž‘λ„(exponential complexity)라고 λΆ€λ₯΄λ©°, Big-O ν‘œκΈ°λ²• 쀑 κ°€μž₯ 느린 μ‹œκ°„ λ³΅μž‘λ„λ₯Ό κ°€μ§„λ‹€.

  • μ˜ˆμ‹œ: ν”Όλ³΄λ‚˜μΉ˜ μˆ˜μ—΄

 

 

 

 


μ°Έκ³ 

https://hanamon.kr/%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98-time-complexity-%EC%8B%9C%EA%B0%84-%EB%B3%B5%EC%9E%A1%EB%8F%84/

728x90