[ BOJ / C++ ] 15658번 연산자 끼워넣기 (2)
파이썬으로도 해결해보았다. C++ 코드와 조금은 다르게 풀어보았다.
나누기 부분에서 계속해서 오답처리가 되었고, result//arr[cur]
을 int(result/arr[cur])
로 변경하자 해결되었다. 문제의 나눗셈이 C++14 기준을 따라서 그런 것 같다.
n=int(input())
arr=list(map(int, input().split()))
op=list(map(int, input().split()))
maxi=-1000000000
mini=1000000000
def DFS(cur, result):
global maxi
global mini
if cur==n:
maxi=max(maxi, result)
mini=min(mini, result)
return
if op[0]>0:
op[0]-=1
DFS(cur+1, result+arr[cur])
op[0]+=1
if op[1]>0:
op[1]-=1
DFS(cur+1, result-arr[cur])
op[1]+=1
if op[2]>0:
op[2]-=1
DFS(cur+1, result*arr[cur])
op[2]+=1
if op[3]>0:
op[3]-=1
if result==0:
DFS(cur+1, 0)
op[3]+=1
else:
DFS(cur+1, int(result/arr[cur]))
op[3]+=1
DFS(1, arr[0])
print(maxi)
print(mini)