알고리즘/백준

[백준/Swift] 11051번: 이항 계수 2

녕이 2023. 3. 9. 16:14
728x90

 

https://www.acmicpc.net/problem/11051

 

11051번: 이항 계수 2

첫째 줄에 \(N\)과 \(K\)가 주어진다. (1 ≤ \(N\) ≤ 1,000, 0 ≤ \(K\) ≤ \(N\))

www.acmicpc.net

 

이항계수가 뭔지만 안다면 쉽게 풀 수 있는 문제였다.피라미드 형태로 되어있지만 한쪽으로 쭉 밀면 2차원 배열로 나타나는데 좌측 상단쪽의 대각선의 원소와 행 기준 윗 원소를 더하면 현재 원소 값을 구할 수 있다. dp 배열을 사용해서 앞서 저장된 값을 사용해서 빠르게 진행~

import Foundation

//input
let nk = readLine()!.split(separator: " ").map{ Int(String($0))! }
let (n, k) = (nk[0], nk[1])
var dp = [[Int]](repeating: [Int](repeating: 1, count: n + 1), count: n + 1)
for i in 1...n {
    for j in 0...i {
        if j == 0 || j == i {
            dp[i][j] = 1
        }else {
            dp[i][j] = (dp[i-1][j-1] + dp[i-1][j]) % 10007
        }
    }
}
print(dp[n][k])

 

 

728x90