Python/재귀 BOJ-14888 연산자 끼워넣기

[Python/재귀] BOJ-14888 연산자 끼워넣기

꽤 쉬운 문제다.

만들 수 있는 식의 결과가 최대인 것과 최소인 것을 구하면 된다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
import sys

N = int(input())
A = list(map(int, input().split()))
a,b,c,d = map(int,input().split())  # 덧셈 뺄샘 곱셈 나눗셈

max_ans, min_ans = -sys.maxsize -1, sys.maxsize
def rec(num, idx, a,b,c,d):
    global min_ans, max_ans
    if idx == N :
        min_ans = min(min_ans, num)
        max_ans = max(max_ans, num)
        return
    else :
        if a > 0 :
            rec(num + A[idx],idx+1,a-1,b,c,d)
        if b > 0 :
            rec(num - A[idx],idx+1,a,b-1,c,d)
        if c > 0 :
            rec(num * A[idx],idx+1,a,b,c-1,d)
        if d > 0 :
            rec(int(num / A[idx]),idx+1,a,b,c,d-1)

rec(A[0],1,a,b,c,d)
print(max_ans)
print(min_ans)

Reference

문제 : https://www.acmicpc.net/problem/14888

풀이참고 : https://chul2-ing.tistory.com/67