본문 바로가기
알고리즘 문제풀이/백준

백준 14888 #2

by Hoseok 2023. 5. 23.
728x90
반응형

 

 

코드 길이 약간 단축.

 

 

백준 14888 다른 풀이 버전.

import sys
import itertools

input = sys.stdin.readline

n = int(input())

# 숫자
number = list(map(int, input().split()))

#연산자 카운트
operator = list(map(int, input().split()))

result = []

real_operator = []

# 연산자로 바꿔주는 함수
def pick_operator(operator):
  if operator[0] != 0:
    for i in range(operator[0]):
      real_operator.append("+")
  if operator[1] != 0:
    for i in range(operator[1]):
      real_operator.append("-")
  if operator[2] != 0:
    for i in range(operator[2]):
      real_operator.append("*")
  if operator[3] != 0:
    for i in range(operator[3]):
      real_operator.append("/")

pick_operator(operator)

# 계산하는 함수
def calculate(number, op):
  result = number[0]
  for i in range(1, len((number))):
    if op[i-1] == '+':
      result += number[i]
    elif op[i-1] == '-':
      result -= number[i]  
    elif op[i-1] == '*':
      result *= number[i]
    elif op[i-1] == '/':
      if result < 0:
        result = -((-result) // number[i])
      else:
        result //= number[i]
  return result

# 최댓값, 최솟값 만들어주는 함수
def solution(number, real_operator):
  max_result = -sys.maxsize -1
  min_result = sys.maxsize

  # 연산자 순열
  operator_permutation = itertools.permutations(real_operator)

  for op in operator_permutation:
    result = calculate(number, op)
    min_result = min(min_result, result)
    max_result = max(max_result, result)

  return max_result, min_result

# 문제 해결 및 결과 출력
max_result, min_result = solution(number, real_operator)
print(max_result)
print(min_result)
728x90
반응형

'알고리즘 문제풀이 > 백준' 카테고리의 다른 글

백준 11048  (0) 2023.05.24
백준 2193  (0) 2023.05.23
백준 14888  (0) 2023.05.23
백준 2468  (0) 2023.05.22
백준 2667 #2  (0) 2023.05.17