블로그

ETC

게시 3분

모든 문제에서 점화식 세우는 과정은 필수적이다

2225번: 합분해

5557번: 1학년

15486번: 퇴사 2

2240번: 자두나무

2096번: 내려가기

13398번: 연속합 2

11058번: 크리보드

2666번: 벽장문의 이동

14567번: 선수과목 (Prerequisite)

2229번: 조 짜기

2410번: 2의 멱수의 합

Ezral 여눈부터 가네 ㅈㅈ - 20500

20500번: Ezreal 여눈부터 가네 ㅈㅈ

나머지를 저장하지 않고 숫자 자체를 저장해도 되기는 하다.
다만, 나머지를 저장해서 풀면 좋을 듯하다.
나머지의 역연산에 대한 대처가 중요할 수 있는 문제다.

let FIVE = 1, ONE = 0, MOD = 1_000_000_007 let N = Int(readLine()!)! var dp = [[[Int]]](repeating:[[Int]](repeating:[Int](repeating:0,count:2),count:3),count:N+1) dp[1][1][ONE] = 1 dp[1][2][FIVE] = 1 for i in 1..<N { for j in 0...2 { dp[i+1][(j+1)%3][ONE] = (dp[i+1][(j+1)%3][ONE] + dp[i][j][ONE]) % MOD dp[i+1][(j+1)%3][ONE] = (dp[i+1][(j+1)%3][ONE] + dp[i][j][FIVE]) % MOD dp[i+1][(j+5)%3][FIVE] = (dp[i+1][(j+5)%3][FIVE] + dp[i][j][ONE]) % MOD dp[i+1][(j+5)%3][FIVE] = (dp[i+1][(j+5)%3][FIVE] + dp[i][j][FIVE]) % MOD } } print(dp[N][0][FIVE])

16500번: 문자열 판별

1915번: 가장 큰 정사각형

댓글

댓글을 남기면 닉네임(또는 GitHub 계정 정보)이 저장됩니다. 개인정보처리방침

GitHub