요구능력 : 다이나믹프로그래밍
코드설명 :
후기 : 상당히 어려운문제 이런생각을 대체 어떻게해서 풀어야하지..
하지만 뭔가 얻어가는듯한 문제이다.
let t = Int(String(readLine()!))!
var dp = Array(repeating: 0, count: 5001)
dp[0] = 1
dp[2] = 1
for n in stride(from: 4, through: 5000, by: 2) {
for i in stride(from: 2, through: n, by: 2){
dp[n] += dp[i - 2] * dp[n - i]
dp[n] %= 1000000007
}
}
for _ in 0..<t{
let a = Int(String(readLine()!))!
print(dp[a])
}
'Algorithm > 문제풀이_백준' 카테고리의 다른 글
[Swift][DP] 백준 2293번 (동전1) (0) | 2022.02.15 |
---|---|
[Swift][DFS][BFS] 백준 17142 (연구소 3) (0) | 2022.02.11 |
[Swift][DFS][BFS] 백준 17141번 (연구소 2) (0) | 2022.02.07 |
[Swift][DFS] 백준 2580번 (스도쿠) (0) | 2022.02.04 |
[Swift][BFS] 백준 2234번 (성곽) (0) | 2022.02.03 |
댓글