BOJ(14888) - 연산자 끼워 넣기 Python

최대 1 분 소요

백준(BOJ) - 연산자 끼워 넣기

문제풀이: DFS, 파이썬

해결방법

이 문제는 DFS 를 이용해서 해결할 수 있다.

연산자마다 횟수를 기억하고 각 연산자에 대해서 재귀적으로 호출해서 구현하면 된다.

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

max_result = -1e9
min_result = 1e9

def dfs(x, now):
    global add, sub, mul, div, max_result, min_result
    if n == x:
        max_result = max(max_result, now)
        min_result = min(min_result, now)
    else:
        if add > 0:
            add -= 1
            dfs(x+1, now + data[x])
            add += 1
        if sub > 0:
            sub -= 1
            dfs(x+1, now - data[x])
            sub += 1
        if mul > 0:
            mul -= 1
            dfs(x+1, now * data[x])
            mul += 1
        if div > 0:
            div -= 1
            dfs(x+1, int(now / data[x]))
            div += 1

dfs(1, data[0])
print(max_result)
print(min_result)

댓글남기기