์ฐธ๊ณ ๊ต์ฌ: ๋ชจ๋์ ์๊ณ ๋ฆฌ์ฆ with ํ์ด์ฌ
โ ๋ฌธ์
1๋ถํฐ n๊น์ง ์ฐ์ํ ์ซ์์ ํฉ ๊ตฌํ๊ธฐ
์
๋ ฅ: n
์ถ๋ ฅ: ์ ์
๐ ๊ธฐ์กด ํ์ด
python
def sum_1ton(n):
total = 0
for i in range(1, n+1):
total += i
return total
Swift5
public func sum_1ton(n: Int) -> Int {
var sum:Int = 0
for i in 1..<n+1 {
sum += i
}
return sum
}
๐ญ ๋ถ์
n=10์ผ ๊ฒฝ์ฐ ๋ง์ ์ฐ์ฐ์ 10๋ฒ, n=1000์ผ ๊ฒฝ์ฐ ๋ง์ ์ฐ์ฐ์ 1000๋ฒ ํด์ผ ํ๋ค. ๋ฐ๋ผ์ ๊ธฐ์กด ์ฝ๋๋ก ํ์์ ๊ฒฝ์ฐ, ์๊ฐ๋ณต์ก๋๋ O(n)
๐ก ์๊ฐ๋ณต์ก๋ ์ค์ด๊ธฐ!
์ฐ๋ฆฌ๊ฐ ์ํ ์๊ฐ์ 1๋ถํฐ 10๊น์ง์ ํฉ์ ๊ณ์ฐํ๋ ค๊ณ ํ๋ฉด,
(10*11)/2
๋ผ๊ณ ๊ณ์ฐํ๋ค. ๋ฐ๋ผ์ ์ด ๊ณต์์ ์ผ๋ฐํํ๋ฉด
(n*n+1)/2
์ด๊ณ , ์ด๋ n์ ํฌ๊ธฐ์ ์๊ด์์ด ๋ง์ , ๊ณฑ์ , ๋๋์ ์ ํ ๋ฒ์ฉ ์ํํ๋ฏ๋ก ์๊ฐ๋ณต์ก๋๋ O(1)์ด ๋๋ค.
โ๏ธ ๊ฐ์ ๋ ํ์ด
python
def sum_1ton(n):
return (n * (n+1)) // 2 # ์ฌ๊ธฐ์์ // ์ด ๊ธฐํธ๋ ์ ์ ๋๋์
!
Swift5
public func sum_1toN(n: Int) -> Int {
return (n * (n + 1)) / 2
}
โ๏ธ ์ฐ์ต๋ฌธ์
// ์ฐ์ต๋ฌธ์ 1-1
public func sumPow_1toN(n: Int) -> Int {
var sum = 0
for i in 0...n {
sum += Int(pow(Double(i), 2.0))
}
return sum
}
// ์ฐ์ต๋ฌธ์ 1-2
// ๋ต: O(n)
// ์ฐ์ต๋ฌธ์ 1-3 : O(1)
public func sumPow_1toN(n: Int) -> Int {
return (n * (n + 1) * ((2 * n) + 1)) / 6
}
๋ฐ์ํ