풀이.
itertools의 permutations를 이용해 모든 경우의 수를 만들어놓고 풀이를 하였다.
처음에는 실패하였는데 알고보니 permutations의 경우에는 같은 값 이더라도 원소의 순서가 다르면 다른 경우로 간주하여서 중복되는 경우가 매우 많다 그리하여 set을 이용하여 중복되는 값을 제거하여 문제를 풀어서 통과했다.
소스코드.
import sys
import itertools
N = int(sys.stdin.readline())
number = list(map(int, sys.stdin.readline().split()))
operator = list(map(int, sys.stdin.readline().split()))
op = ''
op += '+' * operator[0]
op += '-' * operator[1]
op += '*' * operator[2]
op += '/' * operator[3]
op = list(op)
op_combination = set(itertools.permutations(op, N-1))
idx = 0
max, min = -1000000000, 1000000000
for o in op_combination:
idx = 0
result = number[0]
for n in range(1, len(number)):
if o[idx] == '+':
result += number[n]
elif o[idx] == '-':
result -= number[n]
elif o[idx] == '*':
result *= number[n]
elif o[idx] == '/':
if result < 0 and number[n] > 0:
result = (abs(result) // number[n]) * -1
else:
result = result // number[n]
idx += 1
if result > max:
max = result
if result < min:
min = result
print(int(max))
print(int(min))
'프로그래밍 > 백준' 카테고리의 다른 글
백준 1927 최소 힙 - 파이썬 (0) | 2021.07.09 |
---|---|
백준 11279 최대힙 - 파이썬 (0) | 2021.07.09 |
백준 14889 스타트와 링크 - 파이썬 (0) | 2021.07.09 |
백준 1541 잃어버린 괄호 - 파이썬 (0) | 2021.07.08 |
백준 11399 ATM - 파이썬 (0) | 2021.07.08 |