14888번: 연산자 끼워넣기

첫째 줄에 수의 개수 N(2 ≤ N ≤ 11)가 주어진다. 둘째 줄에는 A1, A2, ..., AN이 주어진다. (1 ≤ Ai ≤ 100) 셋째 줄에는 합이 N-1인 4개의 정수가 주어지는데, 차례대로 덧셈(+)의 개수, 뺄셈(-)의 개수, 

www.acmicpc.net


  1. 연산자 개수만큼 리스트에 넣어준다
  2. permutation으로 순열을 만든다
  3. 중복된 것들을 set으로 제거
  4. 계산
import sys
from itertools import permutations
N = int(input())
num_list = list(map(int, input().split()))
opperand_input = list(map(int, input().split()))

opperand_list = []
opperand_list.extend(['+']*opperand_input[0])
opperand_list.extend(['-']*opperand_input[1])
opperand_list.extend(['x']*opperand_input[2])
opperand_list.extend(['/']*opperand_input[3])

opperand_comb = set(permutations(opperand_list))
_min = 100000000
_max = -100000000

for o in opperand_comb:
    result = num_list[0]
    for i in range(len(num_list)-1):
        if o[i] == '+':
            result += num_list[i+1]
        elif o[i] == '-':
            result -= num_list[i+1]
        elif o[i] == 'x':
            result *= num_list[i+1]
        elif o[i] == '/':
            if result < 0:
                result = -1*((-1 * result) // num_list[i+1])
            else:
                result //= num_list[i+1]
    _min = min(result, _min)
    _max = max(result, _max)

print(_max)
print(_min)
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기