solve 올바른 괄호의 갯수

This commit is contained in:
Seongbeom Park 2024-04-28 16:28:31 +09:00
parent 6e6e9c54d9
commit 0edd474303
4 changed files with 59 additions and 0 deletions

1
run.py
View File

@ -11,6 +11,7 @@ problems = [
'디스크컨트롤러',
'점찍기',
'합승택시요금',
'올바른괄호의갯수',
]
if __name__ == '__main__':

View File

@ -0,0 +1,18 @@
# [올바른 괄호의 갯수](https://school.programmers.co.kr/learn/courses/30/lessons/12929)
## 문제 설명
올바른 괄호란 (())나 ()와 같이 올바르게 모두 닫힌 괄호를 의미합니다. )(나 ())() 와 같은 괄호는 올바르지 않은 괄호가 됩니다. 괄호 쌍의 개수 n이 주어질 때, n개의 괄호 쌍으로 만들 수 있는 모든 가능한 괄호 문자열의 갯수를 반환하는 함수 solution을 완성해 주세요.
## 제한사항
괄호 쌍의 개수 N : 1 ≤ n ≤ 14, N은 정수
## 입출력 예
n result
2 2
3 5
## 입출력 예 설명
### 입출력 예 #1
2개의 괄호쌍으로 [ "(())", "()()" ]의 2가지를 만들 수 있습니다.
### 입출력 예 #2
3개의 괄호쌍으로 [ "((()))", "(()())", "(())()", "()(())", "()()()" ]의 5가지를 만들 수 있습니다.

View File

@ -0,0 +1,28 @@
def solution(n):
nodes = [1]
for i in range(n-1):
# print(i, nodes)
next_nodes = []
for node in nodes:
next_nodes += [j for j in range(1, node + 2)]
nodes = next_nodes
# print(i+1, nodes)
return len(nodes)
'''
()
()() (())
()()() (())() (()()) ()(()) ((()))
()()()() (())()() (()())() (()()()) ()(())() ((()))() ((())()) ()(()()) ((()())) ()()(()) (())(()) (()(())) ()((())) (((())))
1
11 2
111 21 3 12 3
1111 211 31 4 121 31 4 13 4 112 22 4 13 4
1
2 1
3 2 1 2 1
4 3 2 1 3 2 1 2 1 3 2 1 2 1
'''

View File

@ -0,0 +1,12 @@
from solution import solution
test_cases = [
[[2], 2],
[[3], 5],
[[4], 14],
]
for i, o in test_cases:
print('input', *i, 'output', o)
print('solution', solution(*i))
print()