justsicklife
백준 7490 파이썬 본문
유형은 백트래킹
T = int(input())
arr = ["+","-"," "]
def fun(N,_list):
_list = list(_list)
_sum = [1]
cnt = 2
for i in range(1,N):
if _list[i-1] == " ":
v = _sum.pop()
if v > 0:
_sum.append(v * 10 + cnt)
else :
_sum.append((abs(v * 10) +cnt) * -1)
elif _list[i-1] == "-":
_sum.append(-1* cnt)
else:
_sum.append(cnt)
cnt+= 1
return sum(_sum)
def dfs(c,v,prv,N):
if c == N - 1:
if fun(N,v) == 0:
ans = []
for i in range(1,N+1):
ans.append(str(i))
if i != N:
ans.append(v[i-1])
result.append(ans)
return
for i in range(prv,N-1):
for j in arr:
t = v+ j
dfs(c+1,t,i+1,N)
for i in range(T):
N = int(input())
result = []
dfs(0,"",0,N)
result.sort()
for i in range(len(result)):
print("".join(result[i]))
print()
'알고리즘' 카테고리의 다른 글
백준 1987 파이썬 (0) | 2023.08.18 |
---|---|
프로그래머스 타겟 넘버 파이썬 (0) | 2023.08.13 |
백준 18428번: 감시 피하기 파이썬 (0) | 2023.08.09 |
16198번: 에너지 모으기 파이썬 (0) | 2023.08.06 |
프로그래머스 모의고사 파이썬 (0) | 2023.08.01 |