728x90
반응형
https://www.acmicpc.net/problem/14888
Python
n = int(input())
arr = list(map(int, input().split()))
op = list(map(int, input().split()))
maxi = -10**10
mini = 10**10
def back(k,idx,nt):
global maxi,mini
#print(k,op,nt)
if k == n-1:
maxi = max(maxi,nt)
mini = min(mini,nt)
#print()
return
#for i in range(idx,n):
if op[0]:
op[0]-=1; back(k+1,idx+1,nt+arr[idx+1]); op[0]+=1
if op[1]:
op[1]-=1; back(k+1,idx+1,nt-arr[idx+1]); op[1]+=1
if op[2]:
op[2]-=1; back(k+1,idx+1,nt*arr[idx+1]); op[2]+=1
if op[3]:
op[3]-=1;
if nt<0:
back(k+1,idx+1,-(-nt//arr[idx+1]));
else:
back(k+1,idx+1,nt//arr[idx+1]);
op[3]+=1
back(0,0,arr[0])
print(maxi)
print(mini)
728x90
반응형
'Algorithm Problems' 카테고리의 다른 글
[백준] [Python] 2493번 탑 - 스택 - [대표예제] (0) | 2021.05.22 |
---|---|
[백준] [Python] 14889번 스타트와 링크 (0) | 2021.05.19 |
[백준] [Python] 1966번 프린터 큐 - 큐 (0) | 2021.05.16 |
[백준] [Python] 15655번 N과 M (6) - 백트래킹 - [대표예제] (0) | 2021.05.16 |
[백준] [Python] 9095번 1,2,3 더하기 - DP (0) | 2021.05.13 |