https://www.acmicpc.net/problem/15659
n=int(input())
nums=list(map(int,input().split()))
ops = list(map(int,input().split()))
max_ans=-1000000001
min_ans=10000000001
def dfs(index:int,exp:str):
global max_ans,min_ans
# 종료 조건
if index==n:
max_ans = max(eval(exp),max_ans)
min_ans = min(eval(exp),min_ans)
return
if index>n:
return
# 더하기
if ops[0] > 0:
ops[0]-=1
dfs(index+1,exp+"+"+str(nums[index]))
ops[0]+=1
# 빼기
if ops[1] > 0:
ops[1]-=1
dfs(index+1,exp+"-"+str(nums[index]))
ops[1]+=1
# 곱하기
if ops[2] >0:
ops[2]-=1
dfs(index+1,exp+"*"+str(nums[index]))
ops[2]+=1
# 나누기
if ops[3]>0 :
ops[3]-=1
dfs(index+1,exp+"//"+str(nums[index]))
ops[3]+=1
dfs(1,str(nums[0]))
print(max_ans)
print(min_ans)
'코딩 테스트 > 백준 강의 연습편' 카테고리의 다른 글
브루트포스) 16197.두 동전 (0) | 2022.06.07 |
---|---|
브루트포스) 14500.테트로미노 (0) | 2022.06.07 |
브루트포스) 15658.연산자 끼워넣기(2) (0) | 2022.06.07 |
브루트포스) 14888.연산자 끼워넣기 (0) | 2022.06.07 |
브루트포스) 14225.부분수열의 합 (0) | 2022.06.07 |