BOJ 14888: 연산자 끼워넣기 https://www.acmicpc.net/problem/14888
덧셈(+)
, 뺄셈(-)
, 곱셈(×)
, 나눗셈(÷)
으로만 이루어져 있다.연산자 우선 순위를 무시하고 앞에서부터 진행
해야 한다.DFS
를 사용한다.N = int(input())
# 숫자들 입력
numbers = list(map(int, input().split()))
# 연산자 개수 입력
add, sub, mul, div = map(int, input().split())
max_ = -1e9
min_ = 1e9
def dfs(i, now):
global min_, max_, add, sub, mul, div
# 1부터 시작해서 N이 되면
if i == N:
min_ = min(min_, now)
max_ = max(max_, now)
return
if add > 0:
add -= 1
dfs(i + 1, now + numbers[i])
add += 1
if sub > 0:
sub -= 1
dfs(i + 1, now - numbers[i])
sub += 1
if mul > 0:
mul -= 1
dfs(i + 1, now * numbers[i])
mul += 1
if div > 0:
div -= 1
dfs(i + 1, int(now / numbers[i]))
div += 1
dfs(1, numbers[0])
print(max_)
print(min_)