Swift Data Structure And Algorithm/Basic Number Theory

ํŒŒ์Šค์นผ ์‚ผ๊ฐํ˜•

youngjaeLee1026 2022. 4. 18. 11:12

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