Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- 2870번 수학숙제
- 백준 c++ 2468번
- 17070번
- c++
- 수학숙제
- 오브젝트 풀링
- 백준
- 유니티
- Beakjoon
- 코딩테스트
- Unity
- 백준 17070번
- C#
- 플레이어 이동
- 백준 1103번
- 2468 c++
- 2870번
- 2870번 수학숙제 c++
- 백준 c++ 2870번
- 백준 1103번 c++
- 프로그래머스
- 백준 17070번 c++
- 백준 2870번
- 백준 1103번 게임
- 2870번 c++
- Lv.3
- dfs
- 코테
- Algorithm
- Lv2
Archives
- Today
- Total
주녘공부일지
[프로그래머스 C#] Lv.4 올바른 괄호의 갯수 본문
https://school.programmers.co.kr/learn/courses/30/lessons/12929
1. 정답코드 및 핵심 아이디어, 유의사항
어느 한 괄호 안에 n개의 괄호쌍이 들어간다면, n개의 괄호쌍으로 만들 수 있는 모든 괄호 문자열이 들어갈 수 있으므로, DP문제라고 유추할 수 있음 -> 점화식 구하는 문제
https://godgjwnsgur7.tistory.com/109
DP[1] = 1쌍의 괄호의 경우는 1가지 ()
DP[2] = 2쌍의 괄호의 경우는 2가지 ()(), (())
DP[3] = 3쌍의 괄호의 경우는 5가지 (중요)
- 안에 2개의 괄호, 밖에 0개의 괄호 ((())), (()()) = DP[2] * DP[0]
- 안에 1개의 괄호, 밖에 1개의 괄호 (())() = DP[1] * DP[1]
- 안에 0개의 괄호, 밖에 2개의 괄호 ()(()), ()()() = DP[0] * DP[2]
( 곱셈 연산이 들어가기 때문에 DP[0]은 1로 계산 )
DP[n] = DP[0]*DP[n-1] + DP[1]*DP[n-2] +ㆍㆍㆍ+ DP[n-1]*DP[0] ( DP[0] = 1 )
ex) DP[4] = DP[3]*DP[0] + DP[2]*DP[1] + DP[1]*DP[2] + DP[0]*DP[3] = 5 + 2 + 2 + 5 = 14
이는, 카탈란 수인데, 이와 관련된 더 자세한 내용은 하단 블로그 링크 참조
https://plusthemath.tistory.com/445
정답 풀이 코드
public class Solution
{
public int solution(int n)
{
int[] dp = new int[n + 1];
dp[0] = 1;
dp[1] = 1;
for (int i = 2; i <= n; i++)
{
int num = i - 1;
for (int j = 0; j < i; j++)
dp[i] += dp[j] * dp[num - j];
}
return dp[n];
}
}
'CodingTest > Programmers Lv.4' 카테고리의 다른 글
[프로그래머스 C#] Lv.4 지형 이동 (0) | 2024.02.02 |
---|---|
[프로그래머스 C#] Lv.4 지형 편집 (1) | 2024.02.01 |
[프로그래머스 C#] Lv.4 쿠키 구입 (0) | 2024.01.18 |