순열로 푼 방법 pypy3는 통과하는데 python3에서는 시간 초과가 난다.
import sys
input=sys.stdin.readline
n=int(input())
num=list(map(int,input().split()))
op=[]
size=list(map(int,input().split()))
for i in range(4):
for j in range(size[i]):
if i==0:
op.append('+')
elif i==1:
op.append('-')
elif i==2:
op.append('*')
else:
op.append('/')
answer=[]
maxi=-float('inf')
mini=float('inf')
def dfs(cnt):
if cnt==len(op):
global maxi,mini
sum=num[0]
for i in range(len(op)):
n=num[i+1]
if op[answer[i]]=='+':
sum+=n
elif op[answer[i]]=='-':
sum-=n
elif op[answer[i]]=='*':
sum*=n
else:
sum=int(sum/n)
mini=min(mini,sum)
maxi=max(maxi,sum)
return
for i in range(len(op)):
if not i in answer:
answer.append(i)
dfs(cnt+1)
answer.pop()
dfs(0)
print(maxi)
print(mini)