백준 #14888 연산자 끼워넣기
코드
import sys
# sys.stdin = open("input.txt")
def calculate(left, right, op):
if op == 0:
return int(left + right)
elif op == 1:
return int(left - right)
elif op == 2:
return int(left * right)
elif op == 3:
if left < 0:
left = (-1) * left
return int(left // right) * (-1)
else:
return int(left // right)
def solve(cnt, value):
global min_value, max_value
if cnt == n:
if min_value > value:
min_value = value
if max_value < value:
max_value = value
return
if cnt == 0:
solve(cnt + 1, arr[cnt])
else:
for i in range(4):
if operator[i]:
operator[i] -= 1
solve(cnt + 1, calculate(value, arr[cnt], i))
operator[i] += 1
return
n = int(input())
arr = list(map(int, input().split()))
operator = list(map(int, input().split())) # + - * / 개수
min_value = int(1e9)
max_value = -int(1e9)
solve(0, 0)
print(max_value)
print(min_value)
풀이
아직 많이 부족하다. 시간을 훨씬 더 많이 줄인 풀이가 많이 존재한다. ㅜㅜ
화이팅!
댓글남기기