Codebyte | Bracket Combinations in Python
1.문제 설명
Have the function BracketCombinations(num) read num which will be an integer greater than or equal to zero, and return the number of valid combinations that can be formed with num pairs of parentheses. For example, if the input is 3, then the possible combinations of 3 pairs of parenthesis, namely: ()()(), are ()()(), ()(()), (())(), ((())), and (()()). There are 5 total combinations when the input is 3, so your program should return 5.
에.. 그러니까, 브라켓의 세트 개수를 인풋으로 줄테니, 그만큼의 브라켓 세트를 갖고 몇 가지의 조합이 나오는지 도출해라. 이거죠! 유남셍?!
<제한 사항>
There Is No Je Han Sa Hang
....코드바이트 친구들이 너그러운 것인지. 아니면 불친절한지 모르겠지만, 별도의 제한 사항을 주지 않았답니다. 무슨짓이든 해서 통과하라는 걸까요,..?
입출력 예
input(2) -> outPut(2)
input(3) -> outPut(5)
입출력 예 설명
For example, if the input is 3, then the possible combinations of 3 pairs of parenthesis, namely: ()()(), are ()()(), ()(()), (())(), ((())), and (()()). There are 5 total combinations when the input is 3, so your program should return 5.
2.풀이과정
급작스럽게 코드바이트에서 한 문제를 풀어보고 싶어졌답니다. 특정 기업에서, 이 사이트를 통해 코딩테스트를 진행한다는 이야기를 들었기 때문이에요.
해당 문제는 나름 Hard 난이도에 속하는 문제였어요.
저는 braket 문제는 다 stack을 통해 풀면 된다 생각했는데, 이 문제는 그에 더해서 완전탐색을 요구하는 느낌이 들었답니다!
제 전략으로 접근한 결과물은 다음과 같았어요
import copy
def search(op, cl, arr):
global count
if op == 0 and cl == 0 and len(arr) == 0:
count += 1
return
tmp = copy.deepcopy(arr)
if op > 0:
tmp.append("(")
search(op - 1, cl, tmp)
tmp = copy.deepcopy(arr)
if cl > 0:
if not arr:
return
if arr[-1] == "(":
tmp.pop()
search(op, cl - 1, tmp)
else:
return
def BracketCombinations(num):
opening = num
closing = num
global count
arr = []
count = 0
# code goes here
search(opening, closing, arr)
return count
# keep this function call here
print(BracketCombinations(input()))
효율성은 그냥.. 집으로 돌려보낸 코드같이 되어버려서, 정답을 맞히고도 마음에 썩 들지는 않았답니다.
완전탐색의 효과를 가지면서도, 좀 더 효율적이고 빠른 로직과 인사이트를 얻기위해 시간투자를 더 해보고 싶어요.
Author And Source
이 문제에 관하여(Codebyte | Bracket Combinations in Python), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@spark/Codebyte-Bracket-Combinations-in-Python저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)