[알고리즘/백준] 10422번 : 괄호(python)

유현민·2022년 5월 5일
0

알고리즘

목록 보기
171/253

처음에는 뭔가 싶었다...
카탈란의 수 라는걸 쓰라고 하는데 이런거 쓰기 싫어서 그냥 dp로 풀려고 계속 해봤다.
전체를 N이라고 하면
무작위의 위치에 여는 괄호 하나가 나왔다고 하자. 그리고 그 괄호를 닫는 괄호의 위치를 i라고 하면
괄호 사이에 들어가 있는 괄호의 갯수는 i - 2개가 된다.
i부터 끝까지의 괄호의 갯수는 n - (i - 2) + 2
n - i가 나온다.

dp[n] = dp[i - 2] + dp[n - i]

N = int(input())
a = list(int(input()) for _ in range(N))
dp = [0] * (max(a) + 1)
dp[0] = 1

for n in range(2, max(a) + 1, 2):
    for j in range(2, n + 1, 2):
        dp[n] += dp[j - 2] * dp[n - j]
    dp[i] %= 1000000007
for i in a:
    print(dp[i])
profile
smilegate megaport infra

0개의 댓글