practivceAlgorithm/백준

[백준][Python] 15659 연산자끼워넣기 3

findTheValue 2021. 8. 26. 13:24

얘는 늘 dfs..

 

import sys
input = sys.stdin.readline

def dfs(expression, depth, use_cnt):
    global max_result, min_result
    if depth == N:
        tmp = eval(expression)
        max_result = max(max_result, tmp)
        min_result = min(min_result, tmp)
        return
    if use_cnt[0] < p_cnt:
        use_cnt[0] += 1
        dfs(expression + "+" + str(nums[depth]), depth + 1, use_cnt)
        use_cnt[0] -= 1
    if use_cnt[1] < mi_cnt:
        use_cnt[1] += 1
        dfs(expression + "-" + str(nums[depth]), depth + 1, use_cnt)
        use_cnt[1] -= 1
 
    if use_cnt[2] < mu_cnt:
        use_cnt[2] += 1
        dfs(expression + "*" + str(nums[depth]), depth + 1, use_cnt)
        use_cnt[2] -= 1
 
    if use_cnt[3] < d_cnt:
        use_cnt[3] += 1
        dfs(expression + "//" + str(nums[depth]), depth + 1, use_cnt)
        use_cnt[3] -= 1
 
 
N = int(input())
nums = list(map(int, input().split()))
p_cnt, mi_cnt, mu_cnt, d_cnt = map(int, input().split())
max_result, min_result = -float('inf'), float('inf')
dfs(str(nums[0]), 1, [0, 0, 0, 0])
print(max_result)
print(min_result)