1. ๋ฌธ์
- ์กฐํฉ(Combination)์ ์์ฝ๊ฒ ๊ตฌํ ์ ์๋ ํ์ค์นผ ์ผ๊ฐํ์ ๊ตฌํ
2. ๋ฌธ์ ์ค๊ณ
- n C 0 = 1, n C n = 1์ n๊ฐ ์ค์์ 0๊ฐ, n๊ฐ ์ค์์ n๊ฐ๋ฅผ ๋ฝ๋ ๊ฒฝ์ฐ์ ์์ด๋ฏ๋ก 1, ์ฆ 2์ฐจ์ ๋ฐฐ์ด(ํ์ค์นผ ์ผ๊ฐํ)์ (i, 0), (i, i)๋ ๋ชจ๋ 1๋ก ์ฑ์ธ ์ ์์
- ๊ทธ๋ฆฌ๊ณ ๋๋ฅผ ๊ฒฐ์ ํ๊ธฐ ์ํด์๋ ๋์ ์ผ์ชฝ ์ ๋๊ฐ์ ๊ฐ๊ณผ ๋ฐ๋ก ์ ๊ฐ์ ๋ํด์ค์ผ๋ก์จ ๊ตฌํ ์ ์๊ณ , ์ต์ข ์ ์ผ๋ก n C r์ ์๊ธฐ ์ํด์๋ 2์ฐจ์ ๋ฐฐ์ด(ํ์ค์นผ ์ผ๊ฐํ)์ (n, r)์ ์์๋ฅผ ์ถ๋ ฅํจ์ผ๋ก์จ ๊ฐ์ ์ป์ ์ ์์
3. ์ ์ฒด ์ฝ๋
//MARK: - ํ์ค์นผ ์ผ๊ฐํ
//MARK: - Framework
import Foundation
//MARK: - Function
func solution() -> Void {
//MARK: - Input
guard let N: Int = Int(readLine() ?? "0") else { return }
var pascalTriangle: [[Int]] = Array(repeating: Array(repeating: 0, count: N + 10), count: N + 10)
//MARK: - Process
pascalTriangle[0][0] = 1
for i in 1...N {
pascalTriangle[i][0] = 1 //n C 0 = 1
pascalTriangle[i][i] = 1 //n C n = 1
for j in 1..<i {
pascalTriangle[i][j] = pascalTriangle[i - 1][j - 1] + pascalTriangle[i - 1][j]
}
}
//MARK: - Output
for i in 0...N {
for j in 0..<N {
if pascalTriangle[i][j] == 0 {
continue
}
print("\(pascalTriangle[i][j]) ", terminator: "")
}
if pascalTriangle[i][N] == 0 {
print()
} else {
print(pascalTriangle[i][N])
}
}
}
solution()
์ ์ฒด์ฝ๋๋ ์ฌ๊ธฐ์์ ํ์ธํ ์ ์์ต๋๋ค.
'Swift Data Structure And Algorithm > Basic Number Theory' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
์๋ผํ ์คํ ๋ค์ค์ ์ฒด (0) | 2022.04.18 |
---|---|
Adv. ์์ ํ๋ณ (0) | 2022.04.18 |
chebyshevtheo (0) | 2022.03.08 |
pfactorization (0) | 2022.03.08 |
fmttalpha (0) | 2022.03.08 |