[알고리즘] 14888 연산자 끼워넣기

CHOI IN HO·2024년 3월 5일
0

코딩테스트

목록 보기
60/74

풀이

dfs를 통해 쉽게 풀 수 있으나, 답이 계속 오류가 떴다. 그 이유는 max값이 음수가 나올 수도 있는데, 처음에 max = 0으로 지정해줘서 뜨는 오류

n = int(input())

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

mx = -int(1e9)
mi = int(1e9)
ans = array[0]
def dfs(result, count):
    global mx, mi, add, sub, mul, div
    if count == n-1:
        mx = max(result, mx)
        mi = min(result, mi)
        return

    if add > 0 :
        add -= 1
        dfs(result+array[count+1], count+1)
        add += 1
    if sub > 0 :
        sub -= 1
        dfs(result-array[count+1], count+1)
        sub += 1
    if mul > 0 :
        mul -= 1
        dfs(result*array[count+1], count+1)
        mul += 1
    if div > 0 :
        div -= 1
        dfs(int(result/array[count+1]), count+1)
        div += 1

dfs(ans, 0)
print(mx)
print(mi)
profile
개발자기 되기 위해선 무엇이든!

0개의 댓글