白駿14888号:演算子の挿入
8545 ワード
埋め込み水平演算子
初めて解いた時、ずっと間違っていたと言っていましたが、 問題の最小値は0で、大きすぎます したがって、import sysで非常に小さな値を入力したり、最小値をfloat("-inf")に設定したり、最大値をに設定したりすることができる. set(permutations(operators, N-1)) and permutations(operators,N-1) setを使わないとタイムアウト(なぜかを学ぶ!)
from itertools import permutations
import sys
def solution():
max_result = -sys.maxsize - 1
min_result = sys.maxsize
for operator in set(permutations(operators,N-1)):
# tmp_arr = copy.deepcopy(arr) >> 시간 너무 오래 걸림
result = arr[0]
for i,oper in enumerate(operator):
if oper == "+":
result += arr[i+1]
elif oper == "-":
result -= arr[i+1]
elif oper == "*":
result *= arr[i+1]
else:
if result < 0:
result *= -1
result //= arr[i+1]
result *= -1
else:
result //= arr[i+1]
min_result = min(min_result,result)
max_result = max(max_result,result)
return max_result,min_result
N = int(input())
arr = list(map(int,input().split()))
n_operators = list(map(int,input().split()))
operators = ["+"] * n_operators[0]
operators += ["-"] * n_operators[1]
operators += ["*"] * n_operators[2]
operators += ["/"] * n_operators[3]
answer_list = solution()
print(answer_list[0])
print(answer_list[1])
Reference
この問題について(白駿14888号:演算子の挿入), 我々は、より多くの情報をここで見つけました https://velog.io/@dlgk0205/백준-14888번-연산자-끼워넣기テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol