본문 바로가기
알고리즘/완전탐색

[백준][Python] 14888번 연산자 끼워넣기

by 임짠짠 2022. 11. 28.
반응형
 

14888번: 연산자 끼워넣기

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

www.acmicpc.net

 

 

 

코드

 

n = int(input())
a_list = list(map(int,input().split()))
add,sub,mul,div = map(int,input().split())
max_n = -int(1e9)
min_n = int(1e9)

def dfs(add,sub,mul,div,cnt,ans):
	global max_n
	global min_n
	
	if cnt == n:
		max_n = max(max_n,ans)
		min_n = min(min_n,ans)
	
	if add:
		dfs(add-1,sub,mul,div,cnt+1,ans+a_list[cnt])
	if sub:
		dfs(add,sub-1,mul,div,cnt+1,ans-a_list[cnt])
	if mul:
		dfs(add,sub,mul-1,div,cnt+1,ans*a_list[cnt])
	if div:
		dfs(add,sub,mul,div-1,cnt+1,int(ans/a_list[cnt]))

dfs(add,sub,mul,div,1,a_list[0])
print(max_n)
print(min_n)
반응형

댓글