2. μž‘μ—…μ˜ 수λ₯Ό ν†΅ν•œ 비ꡐ

1.νŽ˜μ΄μ§€λ₯Ό ν†΅ν•΄μ„œ μš°λ¦¬λŠ” μ‹œκ°„μ„ ν†΅ν•œ μ„±λŠ₯비ꡐ가 크게 μ‹ λ’°ν•  수 μžˆλŠ” μžλ£Œκ°€ μ•„λ‹˜μ„ μ•Œκ²Œ λ˜μ—ˆλ‹€.

κ·Έλ ‡λ‹€λ©΄ μ–΄λ–€ 방법을 ν†΅ν•΄μ„œ 더 쒋은 μ½”λ“œμ™€ 덜 쒋은 μ½”λ“œλ₯Ό κ΅¬λΆ„ν•˜κ³  비ꡐ할 수 μžˆμ„κΉŒ?

λ°”λ‘œ μ½”λ“œλ₯Ό 톡해 컴퓨타가 μˆ˜ν–‰ν•΄μ•Όν•˜λŠ” μž‘μ—…μ˜ 수λ₯Ό κ³„μ‚°ν•˜λŠ” 방법이닀.

μ‹œκ°„μ€ ν•΄λ‹Ή μ»΄ν“¨ν„°μ˜ μ»¨λ””μ…˜, 사양 등에 따라 λ°”λ€” 수 μžˆμœΌλ‚˜ μž‘μ—…μ˜ μˆ˜λŠ” μΌμ •ν•˜λ‹€.(μ½”λ“œκ°€ λ³€ν•˜μ§€ μ•ŠλŠ”λ‹€λ©΄)

1.νŽ˜μ΄μ§€μ—μ„œμ˜ μ—μ œλ₯Ό ν•΄κ²°ν•˜λŠ” 두가지 방법 쀑 solution2에 λŒ€ν•΄ μž‘μ—…μ˜ 수λ₯Ό κ³„μ‚°ν•˜μ—¬ 보자.

solution2

function addUpToN(n) {
    return n * (n + 1) / 2;
}
  1. κ³±μ…‰(1)
  2. λ₯μ…ˆ(1)
  3. λ‚˜λˆ—μ…ˆ(1)

총 3번의 μž‘μ—…μ„ μ§„ν–‰ν•˜κ²Œ 되고 κ²°κ³Ό 값을 return ν•œλ‹€.

총 μž‘μ—…μ˜ μˆ˜κ°€ n(λ§€κ°œλ³€μˆ˜)에 따라 λ³€ν™”ν•˜μ§€ μ•ŠμŒμ„ μ•Œ 수 μžˆλ‹€.

κ·Έλ ‡λ‹€λ©΄ solution1은 μ–΄λ–¨κΉŒ?

solution1

function addUpToN(n) {
    let total = 0;
    for (let i = 1; i<=n; ++i) {
        total += i;
    }
    return total;
}
  1. total=0 의 ν• λ‹Ή(1)
  2. let i=1 μ—μ„œμ˜ ν• λ‹Ή(1)
  3. i<=n 의 비ꡐ연산(1*n)
  4. ++i 의 μž‘μ—… μˆ˜ν–‰(1*n) (μ •ν™•ν•˜κ²ŒλŠ” i= i+1 μ΄λ―€λ‘œ 2n번의 연산이 μ§„ν–‰)
  5. total +=1 을 μˆ˜ν–‰ν•˜λŠ” λ§μ…ˆ(1*n) (μ •ν™•ν•˜κ²ŒλŠ” total= i+1 μ΄λ―€λ‘œ 2n번의 연산이 μ§„ν–‰)

κ°„λ‹¨ν•˜κ²Œ forλ¬ΈμœΌλ‘œμΈν•œ λ§€κ°œλ³€μˆ˜ n 에 따라 μž‘μ—…μ˜ 양이 λ°©λŒ€ν•  μˆ˜λ„ 적을 μˆ˜λ„ μžˆλ‹€.

μ΄λŸ¬ν•œ ν‘œν˜„μ‹ λ˜λŠ” 계산식에 λŒ€ν•΄μ„œλŠ” μ–΄λ–»κ²Œ λΉ…μ˜€ ν‘œκΈ°λ²•μœΌλ‘œ μΌλ°˜ν™” ν•  수 μžˆμ„κΉŒ?

35λ²ˆκΉŒμ§€μ˜ n*5번과 12κΉŒμ§€μ˜ 2번의 μ—°μ‚°.

즉, 5n+2κ°€ μ—°μ‚°μ˜ νšŸμˆ˜κ°€ λœλ‹€.