728x90
https://programmers.co.kr/learn/courses/30/lessons/12929
문제 풀이
public class Solution {
int[][] dp;
int bino(int n, int k) {
if (k == 0 || k == n || n == 0)
return 1;
if (dp[n][k] != 0)
return dp[n][k];
return dp[n][k] = (bino(n - 1, k - 1) + bino(n - 1, k));
}
public int solution(int n) {
int m = 2 * n;
dp = new int[m + 1][n + 1];
return bino(m, n) - bino(m, n - 1);
}
}
n | 괄호들 | result |
2 | (()) ()() | 2 |
3 | ((())) (()()) (())() ()(()) ()()() | 5 |
4 | (((()))) ((()())) ((())()) ((()))() (()(())) (()()()) (()())() (())(()) (())()() ()((())) ()(()()) ()(())() ()()(()) ()()()() |
14 |
5 | ... | 42 |
6 | ... | 132 |
이 규칙은 카탈랑 수( ⊂ 이항 계수 )와 같다
- 이항 계수 ( Binomial Coefficient ) :
이항식을 이항 정리로 전개했을 때 각 항의 계수이며, 주어진 크기의 (순서 없는) 조합의 가짓수
( n 개 중 r 개를 순서 없이 고르는 경우의 수 ) - 카탈란 수 ( Catalan number ) :
이진 트리의 수 따위를 셀 때 등장하는 수열
( 2n 개 중 n 개를 순서 없이 고르는 경우의 수 ) - ( 2n 개 중 n-1 개를 순서 없이 고르는 경우의 수)
반응형
'코딩 문제 풀기 ( Algorithm problem solving ) > 프로그래머스 ( Programmers )' 카테고리의 다른 글
[프로그래머스(Programmers)][SQL] SELECT (Lv1) 모든 레코드 조회하기 (0) | 2022.01.06 |
---|---|
[프로그래머스(Programmers)][자바(java)] (Lv4) 도둑질 (0) | 2021.11.06 |
[프로그래머스(Programmers)][자바(java)] (Lv2) 12주차 - 피로도 <위클리 챌린지> (0) | 2021.10.26 |
[프로그래머스(Programmers)][자바(java)] (Lv3) 11주차 - 아이템 줍기 <위클리 챌린지> (0) | 2021.10.20 |
[프로그래머스(Programmers)][자바(java)] (Lv2) n^2 배열 자르기 <월간코드챌린지3> (0) | 2021.10.16 |