Input: 1
Output: ["()"]
Input: 2
Output: ["(())", "()()"]
Input: 3
Output: ["((()))", "(()())", "()(())", "(())()", "()()()"]
def bfs(ans,char,l,r,n):
global list
# 다 썼을때
# )가 먼저 나오면 안됨.
if r > l: return
# 추가 부분
ans += char
if char=="(":
l+=1
if r==n: return
elif char==")":
r+=1
if l == n and r == n :
if ans[-1]=="(": return
list.append(ans)
return
if l!=n:
ans2 = [x for x in ans] #deep copy
bfs(ans2, "(", l, r, n)
if r!= n:
ans3 = [x for x in ans] #deep copy
bfs(ans3, ")", l, r, n)
def solution(n):
global list
list = []
if n<1: return "Error"
if n==1:
print "()",1
return
bfs([],"(",0,0,n)
ans = []
for row in list:
ans.append( "".join(row) )
print ( ans, len(ans))
solution(1)
solution(2)
solution(3)
solution(4)
() 1 (['(())', '()()'], 2) (['((()))', '(()())', '(())()', '()(())', '()()()'], 5) (['(((())))', '((()()))', '((())())', '((()))()', '(()(()))', '(()()())', '(()())()', '(())(())', '(())()()', '()((()))', '()(()())', '()(())()', '()()(())', '()()()()'], 14)
'Computer Science > 알고리즘 ( Algorithm )' 카테고리의 다른 글
XX 알고리즘 문제 4 (0) | 2019.04.02 |
---|---|
XX 알고리즘 문제 3 (0) | 2019.03.25 |
XX 알고리즘 문제 1 (0) | 2019.03.18 |
프로그래머스 - 게임 맵 최단거리 (0) | 2019.03.14 |
Codility - OddOccurrencesInArray (0) | 2019.03.12 |