백준 14888번

김가람·2023년 4월 16일
0

1. 문제

14888번

2. 코드

n = int(input())
A = list(map(int, input().split()))
add, sub, mul, div = list(map(int, input().split()))

max_ = -1e9
min_ = 1e9

def dfs(iter, arr):
    global add, sub, mul, div
    global max_, min_
    if iter == n: # Tree의 끝에 도달하면 최대/최소 판별
        max_ = max(max_, arr)
        min_ = min(min_, arr)
    else:
        if add > 0:
            add -= 1
            dfs(iter + 1, arr + A[iter])
            add += 1
        if sub > 0:
            sub -= 1
            dfs(iter + 1, arr - A[iter])
            sub += 1
        if mul > 0:
            mul -= 1
            dfs(iter + 1, arr * A[iter])
            mul += 1
        if div > 0:
            div -= 1
            dfs(iter + 1, int(arr / A[iter]))
            div += 1

dfs(1, A[0])

print(max_)
print(min_)
profile
부캐:데이터 사이언티스트가 되고 싶은 반도체 공장 노예

0개의 댓글