[파이썬] 프로그래머스 : 올바른 괄호의 개수 (레벨4)
풀이
방향성 생각
- DFS로 탐색하면서 중복 방문한 노드는 메모제이션한 값으로 프루닝.
전체코드
def solution(n):
dp = [[-1]*(n+1) for _ in range(n+1)]
def dfs(l,r):
# 맞춰서 도달 했으면 카운팅
if (l,r) == (0,0):
return 1
# r을 더 많이쓰면 올바르지 않음. 괄호는 주어진 개수만 사용해야함
if l>r or l<0 or r<0:
return 0
# 방문한 노드는 메모제이션
if dp[l][r] != -1:
return dp[l][r]
# (썼을때랑 )썼을 때 탐색하기
answer = dfs(l-1,r) + dfs(l,r-1)
dp[l][r] = answer
return answer
return dfs(n,n)
코멘트
- 안어려운데 프로그래머스가 DP 올려치기가 좀 심한듯
'Algorithm > Dynamic Programming' 카테고리의 다른 글
[파이썬] 프로그래머스 : 산 모양 타일링 (레벨3) (0) | 2024.06.12 |
---|---|
[파이썬] 백준 12869 : 뮤탈리스크 (골드4) (0) | 2024.06.08 |
[파이썬] 프로그래머스 : 숫자 타자 대회 (레벨3) (0) | 2024.05.09 |
[파이썬] 프로그래머스 : 사칙연산 (레벨4) (1) | 2024.04.23 |
[파이썬] 백준 14728 : 벼락치기 (골드5) (0) | 2024.04.08 |
[파이썬] 코드트리 : 코드트리 코딩 대회 (골드1) (0) | 2024.04.02 |
[파이썬] 백준 2186 : 문자판 (골드3) (0) | 2024.03.18 |
댓글