2018. 6. 25. 10:43, 알고리즘/BOJ
https://www.acmicpc.net/problem/3012
D[i][j]를 S[i:j]에서의 가능한 가짓수라고 할 때, sep = i+1, i+3, ... , 에 대해 D[i][j] = sigma( kind(S[i], S[sep])*D[i+1][sep]*D[sep+1][j] )라는 식을 얻을 수 있습니다. kind(a, b)는 a, b 두 문자로 만들 수 있는 쌍의 갯수인데, 예를 들어
kind( ? ? ) = 3
kind( ( ? ) = 1
kind( ( ) ) = 1
kind( { { ) = 0
입니다.
위의 점화식은 S[i]와 짝지어지는 괄호 쌍이 S[sep]이라고 간주했을 때의 경우의 수입니다.
문제에서 마지막 5자리를 출력하도록 하는 것이 처리가 굉장히 껄끄러웠습니다.
'알고리즘 > BOJ' 카테고리의 다른 글
[BOJ] 13116번: 30번 (0) | 2018.06.25 |
---|---|
[BOJ] 4196번: Dominos (0) | 2018.06.25 |
[BOJ] 2150번: Strongly Connected Component (0) | 2018.06.25 |
[BOJ] 1720번: 타일 코드 (0) | 2018.06.24 |
[BOJ] 1328번: 고층 빌딩 (0) | 2018.06.24 |
[BOJ] 2228번: 구간 나누기 (0) | 2018.06.22 |
Comments