실버1 : 완전 탐색 문제이다.
풀이
- 그냥 가능성을 다 구한다.
- 그런데 시간 초과가 날수도 있다. 왜냐하면 +-*/가 중복될 수 있으니까
- 그래서 set으로 이런 중복을 제거한후 주르륵 계산해서 답.
Code
import sys
from itertools import permutations
input = sys.stdin.readline
n = int(input())
a = list(map(int, input().split()))
plus, minus, multi, div = map(int, input().split())
state = ["+"] * plus + ["-"] * minus + ["*"] * multi + ["/"] * div
opList = set(permutations(state, len(state)))
maxNum, minNum = -1e11, 1e11
for operations in opList:
ans = a[0]
for op, num in zip(operations, a[1:]):
ans = int(eval(f"{ans}{op}{num}"))
maxNum = max(maxNum, ans)
minNum = min(minNum, ans)
print(maxNum)
print(minNum)