Bibi's DevLog πŸ€“πŸŽ

[λ°±μ€€ 6376] e 계산 (Swift) λ³Έλ¬Έ

ν”„λ‘œκ·Έλž˜λ°/μ•Œκ³ λ¦¬μ¦˜ 풀이 Swift

[λ°±μ€€ 6376] e 계산 (Swift)

λΉ„λΉ„ bibi 2022. 11. 28. 15:38

6376번: e 계산

  • μ‹œκ·Έλ§ˆλŠ” μ•ž μ‹œν–‰μ˜ 값에 λ”ν•˜κ³ , νŒ©ν† λ¦¬μ–Όμ€ μ•ž μ‹œν–‰μ˜ 값에 κ³±ν•˜λŠ” μ‹μœΌλ‘œ κ΅¬ν˜„ν–ˆλ‹€.
  • ν‹€λ Έλ‹€κ³  λ‚˜μ˜€λŠ” μ΄μœ λŠ” 거의 λŒ€λΆ€λΆ„ 좜λ ₯ ν˜•μ‹ λ•Œλ¬Έμ΄μ—ˆλ‹€.
    • n이 0일 λ•Œ, 1일 λ•ŒλŠ” μ •μˆ˜ν˜•μœΌλ‘œ 좜λ ₯
    • n이 2일 λ•ŒλŠ” μ‹€μˆ˜ν˜•μœΌλ‘œ 좜λ ₯
    • n이 3 이상일 λ•ŒλŠ” μ‹€μˆ˜ν˜•μœΌλ‘œ 좜λ ₯, μ†Œμˆ˜μ  9μ§Έ μžλ¦¬κΉŒμ§€
  • 주의 - μ†Œμˆ˜μ  10μ§Έ μžλ¦¬μ—μ„œ λ°˜μ˜¬λ¦Όν–ˆμ„ λ•Œ 끝이 0이라고 ν•˜λ”λΌλ„ 0을 좜λ ₯ν•΄ μ£Όμ–΄μ•Ό ν•œλ‹€.
    • μ˜ˆμ‹œ - n이 8일 λ•Œ e 값은 2.71827876984127 이고, μ†Œμˆ˜μ  10μ§Έ μžλ¦¬μ—μ„œ λ°˜μ˜¬λ¦Όν–ˆμ„ λ•Œ 끝이 0이 λœλ‹€. κ·Έλž˜λ„ 2.718278770 와 같이 0을 결과에 좜λ ₯ν•΄ μ£Όμ–΄μ•Ό ν•œλ‹€.
    • 이 λΆ€λΆ„ λ•Œλ¬Έμ— λ°˜μ˜¬λ¦Όν•  λ•Œ round λŒ€μ‹  String(format:_:) 을 μ‚¬μš©ν–ˆλ‹€.
  • 주의 - num == 0 일 λ•Œ νŒ©ν† λ¦¬μ–Όμ— num을 κ³±ν•˜λ©΄ λ‚˜μ€‘μ— 0을 λΆ„λͺ¨λ‘œ λ‚˜λˆ„κ²Œ λ˜μ–΄ λ¬΄ν•œλŒ€(inf) κ°€ λœλ‹€.

풀이

import Foundation
print("n e")
print("- -----------")
var factorial = 1
var sigma = 0.0
(0...9).forEach { num in
    var sum: [Double] = []
    if num == 0  {
        sum.append(1)
        sigma += 1
        print("\(num) \(1)")
    } else if num == 1 {
        sum.append(1)
        sigma += 1
        print("\(num) \(2)")
    } else if num == 2 {
        sum.append(0.5)
        sigma += 0.5
        factorial *= num
        print("\(num) \(sigma)")
    } else {
        sum.append(1 / Double(factorial * num))
        factorial *= num
        let e = sum.reduce(0.0, +)
        sigma += e
        print("\(num) \(String(format: "%.9f", sigma))")
    }
}