[백준 14888, Silver I] 연산자 끼워넣기

조재현·2023년 1월 11일
0

📒문제



🎈풀이

import sys
def dfs(idx, now):
    global min_result, max_result, cal

    if idx == N:
        min_result = min(min_result, now)
        max_result = max(max_result, now)
        return
    
    else:
        if cal[0] > 0:
            cal[0] -= 1
            dfs(idx+1, now+arr[idx])
            cal[0] += 1

        if cal[1] > 0:
            cal[1] -= 1
            dfs(idx+1, now-arr[idx])
            cal[1] += 1

        if cal[2] > 0:
            cal[2] -= 1
            dfs(idx+1, now*arr[idx])
            cal[2] += 1

        if cal[3] > 0:
            cal[3] -= 1
            dfs(idx+1, int(now/arr[idx]))
            cal[3] += 1
N = int(sys.stdin.readline().rstrip())
arr = list(map(int, sys.stdin.readline().split()))
cal = list(map(int, sys.stdin.readline().split()))


min_result = 9999999999999
max_result = -9999999999999

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

알아두기

전역 변수는 전체 프로세스에서 딱 한개만 존재하는 것이고, 로컬 변수는 재귀 함수를 들어갈 때마다 새로 생성된다.

profile
꿈이 많은 개발자 지망생

0개의 댓글