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
'알고리즘 > 백준' 카테고리의 다른 글
[백준/Swift] 9465번: 스티커 (0) | 2023.03.12 |
---|---|
[백준/Swift] 1699번: 제곱수의 합 (0) | 2023.03.12 |
[백준/Swift] 1038번: 감소하는 수 (0) | 2023.03.09 |
[백준/Swift] 9251번: LCS (0) | 2023.02.24 |
[백준/Swift] 16943번: 숫자 재배치 (0) | 2023.02.20 |