코드

import sys
# sys.stdin = open("input.txt")

def calculate(left, right, op):
    if op == 0:
        return int(left + right)
    elif op == 1:
        return int(left - right)
    elif op == 2:
        return int(left * right)
    elif op == 3:
        if left < 0:
            left = (-1) * left
            return int(left // right) * (-1)
        else:
            return int(left // right)

def solve(cnt, value):
    global min_value, max_value
    if cnt == n:
        if min_value > value:
            min_value = value
        if max_value < value:
            max_value = value
        return

    if cnt == 0:
        solve(cnt + 1, arr[cnt])
    else:
        for i in range(4):
            if operator[i]:
                operator[i] -= 1
                solve(cnt + 1, calculate(value, arr[cnt], i))
                operator[i] += 1
    return

n = int(input())
arr = list(map(int, input().split()))
operator = list(map(int, input().split()))  # + - * / 개수
min_value = int(1e9)
max_value = -int(1e9)
solve(0, 0)
print(max_value)
print(min_value)

:star:풀이

아직 많이 부족하다. 시간을 훨씬 더 많이 줄인 풀이가 많이 존재한다. ㅜㅜ

화이팅!

댓글남기기