[이코테] DFS/BFS_연산자 끼워 넣기 (python)

juyeon·2022년 8월 7일
0

문제

나의 풀이

1. 결국 스터디원의 풀이로..

def cal(i, sum_num, plus, minus, mul, div):
    global max_num, min_num
    if i == n:
        max_num = max(max_num, sum_num)
        min_num = min(min_num, sum_num)
        return
    if plus:
        cal(i + 1, sum_num + num[i], plus - 1, minus, mul, div)
    if minus:
        cal(i + 1, sum_num - num[i], plus, minus - 1, mul, div)
    if mul:
        cal(i + 1, sum_num * num[i], plus, minus, mul - 1, div)
    if div:
        if sum_num >= 0:
            cal(i + 1, sum_num // num[i], plus, minus, mul, div - 1)
        if sum_num < 0:
            cal(i + 1, -(-(sum_num) // num[i]), plus, minus, mul, div - 1)
    
n = int(input())
num = list(map(int, input().split()))
plus, minus, mul, div = map(int, input().split()) # + - * //
max_num, min_num = -1e9, 1e9 # 최댓값, 최솟값 초기화
cal(1, num[0], plus, minus, mul, div) # 함수 실행
print(max_num, min_num, sep = '\n')
  • 주의할 점
    • if div: if sum_num >= 0:
profile
내 인생의 주연

0개의 댓글