티스토리 뷰

ps

BOJ 8895(막대 배치) 풀이

KWG07(joseph0528) 2021. 1. 18. 19:50

solved.ac 티어 : 골드 2

www.acmicpc.net/problem/8895

 

8895번: 막대 배치

높이가 1, 2, ..., n인 막대 n개가 일렬로 배치되어 있다. 막대를 왼쪽이나 오른쪽에서 보면, 큰 막대가 뒤에있는 작은 막대를 가리게 된다. 아래와 같이 4개의 막대로 이루어진 두 배치를 살펴보자.

www.acmicpc.net

 

이문제는 dp이다. 

점화식은 dp[n-1][l-1][r]+dp[n-1][l][r-1]+(i-2)*dp[n-1][l][r]이다.

dp[n-1][l-1][r]는 재일 왼쪽 막대를 뺐을 때이고

dp[n-1][l][r-1]는 재일 오른쪽 막대를 뺐을 때이고

dp[n-1][l][r]*(i-2)는 양쪽 막대를 제외한 나머지 막대를 배치할 수 있는 경우의 수이다.

 

import sys
input=sys.stdin.readline
dp=[[[0 for i in range(23)]for g in range(23)]for q in range(23)]
dp[1][1][1]=1
for i in range(2,21):
    for g in range(1,21):
        for q in range(1,21):
            dp[i][g][q]=dp[i-1][g-1][q]+dp[i-1][g][q-1]+(i-2)*dp[i-1][g][q]
a=int(input())
for _ in range(a):
    n,l,r=map(int,input().split());print(dp[n][l][r])

'ps' 카테고리의 다른 글

BOJ 17407(괄호 문자열과 쿼리)풀이  (0) 2021.01.21
BOJ 11670(초등 수학) 풀이  (0) 2021.01.19
BOJ 7894(큰 수)풀이  (0) 2021.01.17
BOJ 12844(XOR)풀이  (0) 2021.01.15
BOJ 1574(룩 어택)풀이  (0) 2021.01.12
댓글