백준 14888번: 연산자 끼워넣기

Couch Potato·2020년 9월 24일
0
post-thumbnail

백준 연산자 끼워넣기

  • 처음 풀었을 때, 틀리다고 계속 나왔음
  • 문제는 min값을 0으로 주어 너무 컸음
  • 따라서, import sys 를 통해 매우작은값을 주거나, float("-inf")로 min,max값 설정
  • 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])

0개의 댓글

관련 채용 정보