자료ꡬ쑰/πŸ‘‰μ•Œκ³ λ¦¬μ¦˜ - 4

ν•™μŠ΅κΈ°λ‘

였늘 듀은 κ°•μ˜ λͺ©λ‘

  1. μ‹œκ°„λ³΅μž‘λ„ - 1
  2. μ‹œκ°„λ³΅μž‘λ„ - 2

μ•Œκ³ λ¦¬μ¦˜ λ³΅μž‘λ„

λ³΅μž‘λ„κ°€ μ™œ 쀑간에 μžˆμ§€?

λ³΅μž‘λ„λ₯Ό κ³΅λΆ€ν•˜κ³ , 기초적인 자료ꡬ쑰λ₯Ό 배우면 λ³„λ‘œ 와닿지도 μ•Šκ³  κ·Έλ™μ•ˆ κΉŒλ¨Ήμ„ 것이닀.

κ°•μ‚¬λ‹˜μ΄ μ΄λ ‡κ²Œ λ§μ”€ν•˜μ…¨λŠ”λ°, μ΄λŸ°μƒκ°μ„ μ²˜μŒν•΄λ³΄λŠ”λ° 이게 λ§žλ‹€.
λ³΅μž‘λ„λ₯Ό κ³΅λΆ€ν•˜λ©΄ μ•Œκ³ λ¦¬μ¦˜μ„ ν•˜λ©΄μ„œ β€œλ‚΄κ°€ μ§  μ•Œκ³ λ¦¬μ¦˜μ˜ λ³΅μž‘λ„λŠ” μ–΄λ–»κ²Œ λ˜λŠ”κ°€?β€λΌλŠ” μƒκ°μœΌλ‘œ λ³΅μž‘λ„λ₯Ό ꡬ해보고, λ‹€λ₯Έ μ•Œκ³ λ¦¬μ¦˜κ³Ό λ³΅μž‘λ„μ˜ 차이λ₯Ό 보면 μ’€ 와닿고 기얡에도 길게 λ‚¨κ²Œ λœλ‹€.

그럼 λ‹€μŒμ€ λ³΅μž‘λ„λž€ 무슨말일까?

μ•Œκ³ λ¦¬μ¦˜μ—μ„œ λ³΅μž‘λ„?

μ•Œκ³ λ¦¬μ¦˜μ—μ„œ λ³΅μž‘λ„λž€ μ‹œκ°„, 곡간 λ³΅μž‘λ„λ₯Ό λ§ν•œλ‹€.
μ΄λŠ” μ•Œκ³ λ¦¬μ¦˜μ˜ νš¨μœ¨μ„ ν‰κ°€ν•˜λŠ” 기쀀이 λœλ‹€.

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

μ‹œκ°„λ³΅μž‘λ„ = μ‹€ν–‰ 속도

μ‹œκ°„λ³΅μž‘λ„λŠ” ν•˜λ‚˜μ˜ 문제λ₯Ό ν‘ΈλŠ”λ° β€œκ±Έλ¦¬λŠ” μ‹œκ°„β€μ΄λ‹€.
λ”°λΌμ„œ, μ΄λŠ” β€œμ‹€ν–‰ 속도”와 κ°™λ‹€.

μ‹œκ°„λ³΅μž‘λ„λ₯Ό κ΅¬ν•˜λŠ” 방법

간단
κ°„λ‹¨ν•˜κ²Œ λ§ν•˜λ©΄ n에따라 반볡문이 λ°˜λ³΅λ˜λŠ” 횟수λ₯Ό κ΅¬ν•œλ‹€.

이 μ½”λ“œκ°€ μ–Όλ§ˆλ‚˜ μ˜€λž˜κ±Έλ¦¬λŠ”κ°€?λ₯Ό κ΅¬ν•˜κΈ° μœ„ν•œ 기쀀을 반볡문으둜 μ‚ΌλŠ”λ‹€.
μ™œ 반볡문으둜 기쀀을 μž‘λŠ”κ°€? λΌλŠ” μ§ˆλ¬Έμ„ ν•˜λ©΄, 같은 μ½”λ“œλ₯Ό λ°˜λ³΅ν•˜λŠ” 것이 반볡문이고, μ½”λ“œμ˜ μ‹€ν–‰μ‹œκ°„μ€ 각 μ½”λ“œμ˜ μ‹€ν–‰μ‹œκ°„μ˜ 합이닀.
λ°˜λ³΅λ¬Έμ€ 같은 μ½”λ“œλ₯Ό λ°˜λ³΅ν•˜μ—¬ μ‹€ν–‰μ‹œκ°„μ„ μ¦κ°€μ‹œν‚¨λ‹€.
n이 μ£Όμ–΄μ§ˆλ•Œ 반볡문이 $log n$번 μˆ˜ν–‰λ˜λŠλƒ, $n$번 μˆ˜ν–‰λ˜λŠλƒ, $n^2$번 μˆ˜ν–‰λ˜λŠλƒμ— λ”°λΌμ„œ μ΄λ“€μ˜ μ„±λŠ₯을 κ²°μ •ν•  수 μžˆλ‹€.

ν•˜λ‚˜μ˜ 예둜
f1(n)의 λ³΅μž‘λ„κ°€ 100000μ‹œκ°„,
f2(n)의 λ³΅μž‘λ„κ°€ $n^2$μ‹œκ°„,
이라 ν• λ•Œ,

f1(n)
f2(n)

μ΄λŸ¬ν•œ ν”„λ‘œκ·Έλž¨μ˜ μ‹œκ°„λ³΅μž‘λ„λŠ” 100000+n^2 μ‹œκ°„μ΄κ² μ§€λ§Œ,
n이 100000처럼 맀우 μ»€μ§€κ²Œλ˜λ©΄, 100000μ‹œκ°„μ€ μ•„μ£Ό μž‘μ€ μ‹œκ°„μ΄ λ˜μ–΄ λ¬΄μ‹œν•΄λ„ 될 μ •λ„μ˜ μ‹œκ°„μ΄ λœλ‹€.
이처럼 μƒμˆ˜μ‹œκ°„μ€ λ¬΄μ‹œν•˜κ³ , κ°€μž₯ 큰 비쀑을 μ°¨μ§€ν•˜λŠ” λ°˜λ³΅λ¬Έμ„ κΈ°μ€€μœΌλ‘œ μž‘μ•„μ„œ μ‹œκ°„λ³΅μž‘λ„λ₯Ό ν‘œκΈ°ν•˜κ²Œ λœλ‹€.

κ³΅κ°„λ³΅μž‘λ„?

κ³΅κ°„λ³΅μž‘λ„ = λ©”λͺ¨λ¦¬ μ‚¬μš©λŸ‰

κ³΅κ°„λ³΅μž‘λ„λŠ” ν•˜λ‚˜μ˜ 문제λ₯Ό ν‘ΈλŠ”λ° ν•„μš”ν•œ β€œμ €μž₯κ³΅κ°„μ˜ 크기”이닀.
λ”°λΌμ„œ, μ΄λŠ” β€œλ©”λͺ¨λ¦¬ μ‚¬μš©λŸ‰β€κ³Ό κ°™λ‹€.

λ©”λͺ¨λ¦¬ μ‚¬μš©λŸ‰μ€ (μžλ£Œν˜•μ˜ 크기 * μ‚¬μš©ν•  크기)의 합이 λœλ‹€. λ©”λͺ¨λ¦¬ μ‚¬μš©λŸ‰μ€ λ‚˜μ€‘μ— ν•˜μ§€μ•Šμ„κΉŒ 싢기도 ν•˜κ³ , 파이썬이라 μ•ˆν•˜λ €λ‚˜ 싢기도..?

μ„±λŠ₯ ν‘œκΈ°λ²• (μ‹œκ°„λ³΅μž‘λ„)

λΉ… 였(Big-O) : O(n)

μ΅œμ•…μ˜ μ‹€ν–‰μ‹œκ°„μ„ ν‘œκΈ°ν•œλ‹€.

μƒμˆ˜λŠ” μ œκ±°ν•˜κ³  ν‘œκΈ°ν•œλ‹€. (λ‹€λ₯Έ ν‘œκΈ°λ²•λ“€λ„ λ§ˆμ°¬κ°€μ§€) n에따라 μ–΄λŠμ •λ„λ‘œ λ³΅μž‘λ„κ°€ μ¦κ°€ν•˜λŠ”μ§€ μ•ŒκΈ° μœ„ν•¨μ΄κΈ° λ•Œλ¬Έμ— μƒμˆ˜ 및 κ³„μˆ˜λŠ” μ œκ±°ν•˜κ³  log, μ§€μˆ˜λ“±μ„ μ΄μš©ν•΄μ„œ ν‘œκΈ°ν•œλ‹€.

O($1$), O($log n$), O($n$), O($n log n$), O($n^2$), O($2^n$), O($n!$)λ“±μœΌλ‘œ ν‘œκΈ°ν•œλ‹€.

O($1$)을 μ‚¬μš©ν•˜λŠ” κ²½μš°λŠ” O(n)μ—μ„œ n의 μžλ¦¬κ°€ μƒμˆ˜μΌλ•Œμ΄λ‹€. (n에 따라 μ‹œκ°„μ΄ μ¦κ°€ν•˜μ§€ μ•ŠλŠ”λ‹€λŠ” λœ»μ„ ν¬ν•¨ν•˜κ³  μžˆλ‹€.)
ex) O(9999) -> O(1)

O($n$)을 μ‚¬μš©ν•˜λŠ” κ²½μš°λŠ” O(n)μ—μ„œ n의 μ§€μˆ˜κ°€ 1μΌλ•Œμ΄λ‹€. κ³„μˆ˜λ‚˜ λ”ν•΄μ§€λŠ” μƒμˆ˜λŠ” λ¬΄μ‹œν•œλ‹€.
ex) O(3n) -> O(n), O(3n + 10000) -> O(3n)

O($n^k$)을 μ‚¬μš©ν•˜λŠ” κ²½μš°λŠ” O(n)μ—μ„œ n의 μ§€μˆ˜κ°€ kμΌλ•Œμ΄λ‹€.(μ΅œμ•½μ˜ μ‹€ν–‰μ‹œκ°„μ„ ν‘œκΈ°ν•˜λ―€λ‘œ μ§€μˆ˜κ°€ κ°€μž₯ 큰 항을 μ΄μš©ν•΄μ„œ ν‘œκΈ°ν•œλ‹€.) ex) O($3n^3 + 2n^2 + n + n log n$) -> O(n^3)

κ·Έλž˜ν”„

μ˜€λ©”κ°€ (Ξ©) : Ξ©(n)

μ΅œμƒμ˜ μ‹€ν–‰μ‹œκ°„μ„ ν‘œκΈ°ν•œλ‹€

세타 (Θ) : Θ(n)

평균 μ‹€ν–‰μ‹œκ°„μ„ ν‘œκΈ°ν•œλ‹€.

κ°€μž₯ 많이 μ‚¬μš©ν•˜λŠ” λΉ…μ˜€ ν‘œκΈ°λ²•

μ™œ? λΉ…μ˜€ ν‘œκΈ°λ²•μ€ μ΅œμ•…μ˜ μΌ€μ΄μŠ€λ₯Ό λŒ€λΉ„ν•˜λŠ” ν‘œκΈ°λ²•μ΄λ‹€.
μ•Œκ³ λ¦¬μ¦˜ 문제λ₯Ό ν’€λ•ŒλŠ” ν•œμ •λœ μ‹œκ°„κ³Ό ν•œμ •λœ λ©”λͺ¨λ¦¬μ—μ„œ μ΅œμ„ μ˜ μΌ€μ΄μŠ€λΆ€ν„° μ΅œμ•…μ˜ μΌ€μ΄μŠ€κΉŒμ§€ λͺ¨λ‘ μ£Όμ–΄μ§ˆ 것이닀.
μ΄λ•Œ μ΅œμ„ μ˜ μ½”λ“œλ₯Ό μž‘μ„±ν•˜κΈ° μœ„ν•΄μ„œλŠ” μ΅œμ•…μ˜ μΌ€μ΄μŠ€λ₯Ό κΈ°μ€€μœΌλ‘œ ν•˜λŠ” 것이 λͺ¨λ“  μΌ€μ΄μŠ€λ₯Ό 톡과할 수 μžˆλŠ” μ½”λ“œμΌ 것이닀.
그러기 μœ„ν•΄μ„œλŠ” λ‚΄κ°€ μž‘μ„±ν•˜λŠ” μ½”λ“œμ˜ μ΅œμ•…μ˜ μΌ€μ΄μŠ€λ₯Ό ν•΄κ²°ν• λ•Œμ˜ μ‹œκ°„λ³΅μž‘λ„λ₯Ό κ΅¬ν•΄μ•Όν•˜λŠ”λ°, 이것이 λΉ…μ˜€ ν‘œκΈ°λ²•μœΌλ‘œ κ΅¬ν•œ μ‹œκ°„λ³΅μž‘λ„μ΄κΈ° λ•Œλ¬Έμ΄λ‹€.

λΉ…μ˜€ ν‘œκΈ°λ²•μœΌλ‘œ μ‹œκ°„λ³΅μž‘λ„ κ΅¬ν•˜κΈ°

sum
κ°•μ’Œμ—μ„œ λ‚˜μ˜¨ 1λΆ€ν„° nκΉŒμ§€μ˜ 합을 κ΅¬ν•˜λŠ” μ•Œκ³ λ¦¬μ¦˜μ„ μž‘μ„±ν•΄λ³΄μž

  1. κ°€μž₯ λ‹¨μˆœν•˜κ²Œ 풀이방법 : 반볡문으둜 1λΆ€ν„° nκΉŒμ§€ λ‹€ ν•©ν•΄μ„œ κ΅¬ν•œλ‹€.
n = 100
sum = 0
for i in range(1, n + 1):
    sum += i
print(sum)

μ‹œκ°„λ³΅μž‘λ„ : O(n)

  1. 곡식을 μ΄μš©ν•œ 풀이방법 : $\displaystyle\sum_{i=1}^n i = {n(n+1)\over2}$
n = 100
sum = (n * (n + 1)) / 2
print(sum)

μ‹œκ°„λ³΅μž‘λ„ : O(1)

이와 같이 같은 ν”„λ‘œκ·Έλž¨λ„ λ³΅μž‘λ„κ°€ μ΄λ ‡κ²Œλ‚˜ 차이가 λ‚  수 μžˆλ‹€.

λ§ˆμ§€λ§‰

μ•Œκ³ λ¦¬μ¦˜μ„ ν•œλ‹€λ©΄ μ‹œκ°„λ³΅μž‘λ„λ₯Ό ꡬ할 수 μžˆμ–΄μ•Όν•˜κ³ , μ€‘μš”ν•˜λ‹€.
κ°•μ‘°κ°•μ‘°κ°•μ‘°κ°•μ‘°
κ°•μ‚¬λ‹˜κ»˜μ„œλ„ 계속 λ§μ”€ν•˜μ…¨λ‹€.
μžλ£Œκ΅¬μ‘°ν• λ•ŒλŠ” κ·Έλƒ₯ 슀-윽 μ§€λ‚˜κ°€λ„ μ•Œκ³¨νŒŒνŠΈλ‘œ λ„˜μ–΄κ°€λ©΄ 슀-윽 μ§€λ‚˜κ°€λ©΄ μ•ˆλ¨!!

μ‹œκ°„/곡간 λ³΅μž‘λ„λŠ” λ‹€λ₯Έ μ•Œκ³ λ¦¬μ¦˜μ΄λ‚˜ μžλ£Œκ΅¬μ‘°μ™€ ν¬μŠ€νŠΈκ°€ 같이 ν¬ν•¨λ˜μ§€ μ•ŠμœΌλ©΄ μ’‹κ² μ–΄μ„œ λ”°λ‘œ 뺐닀. 자료ꡬ쑰 νŒŒνŠΈμ§€λ§Œ, μ•Œκ³ λ¦¬μ¦˜μ— 더 가깝닀고 μƒκ°ν•΄μ„œ μ•Œκ³ λ¦¬μ¦˜ μΉ΄ν…Œκ³ λ¦¬λ‘œ λ„£μ–΄μ•Όκ² λ‹€.

μ•„! 그리고 κ·Έ $n^3 + n^2$같은 항이 μ—¬λŸ¬κ°œμžˆλŠ” ν˜•νƒœμ—μ„œ μ΅œκ³ μ°¨ν•­λ§Œ λ³Έλ‹€λŠ” 뢀뢄이 이해가 μ•ˆλ μˆ˜ μžˆλŠ”λ° n이 μ—„μ²­ 컀지면 아무리 $n^2$이라도 $n^3$에 λΉ„ν•˜λ©΄ λ¬΄μ‹œν•΄λ„ 될 μ •λ„λ‘œ μ—„μ²­ μž‘μ€ μˆ˜λΌμ„œ κ·ΈλŸ°κ²ƒμ΄λ‹€.
(이μͺ½μ€ μˆ˜ν•™?μͺ½μ΄λΌ ν•˜κΈ΄ λ­ν•œλ° μ•”νŠΌ μˆ˜ν•™μͺ½, μ•„ 마침 말이 λ‚˜μ™€μ„œ 그런데 ν˜•μƒν™”μˆ˜ν•™μ΄λΌκ³  μˆ˜ν•™ 책도 있고 μœ νŠœλΈŒλ„ μžˆλŠ”λ° μˆ˜ν•™ μ’‹μ•„ν•˜λ©΄ κ½€ μž¬λ°Œλ‹€. μœ νŠœλΈŒλŠ” μ•½κ°„ μ‘Έλ¦΄μˆ˜μ΄γ…†γ…‡β€¦)

λ‹€μŒμ— 듀을 κ°•μ˜

  1. ν•΄μ‰¬ν…Œμ΄λΈ” - 1
  2. ν•΄μ‰¬ν…Œμ΄λΈ” - 2
  3. ν•΄μ‰¬ν…Œμ΄λΈ” - 3
  4. ν•΄μ‰¬ν…Œμ΄λΈ” - 4
  5. ν•΄μ‰¬ν…Œμ΄λΈ” - 5

λ‹€ λ“€μ„μˆ˜ μžˆμ„μ§€ λ‚˜λˆ λ“€μ–΄μ•Όν• μ§€ λͺ¨λ₯΄κ² λ‹€.. 같은 λ‚΄μš©μ€ ν•œλ²ˆμ— λ“£λŠ”κ²Œ 졜고인데 집에 λ„μ°©ν•˜λ©΄ 7μ‹œ, 저녁먹고 λ­ν•˜λ‹€λ³΄λ©΄ 8μ‹œ,
2λ°°μ†μœΌλ‘œ 2λ²ˆμ΄μƒ 듀을텐데 그러면 ν•œ 2μ‹œκ°„μ •λ„ 걸리고, 10μ‹œ? 포슀트 2μ‹œκ°„ μ΄λ‚΄λ‘œ 제좜..?
으으.. λ˜λ €λ‚˜ λͺ¨λ₯΄κ² λ‹€.

λŒ“κΈ€λ‚¨κΈ°κΈ°