개인적으로 dfs 공부하기에 정말 좋다고 생각했던 문제중에 하나인거같다.
https://www.acmicpc.net/problem/14888
14888번: 연산자 끼워넣기
첫째 줄에 수의 개수 N(2 ≤ N ≤ 11)가 주어진다. 둘째 줄에는 A1, A2, ..., AN이 주어진다. (1 ≤ Ai ≤ 100) 셋째 줄에는 합이 N-1인 4개의 정수가 주어지는데, 차례대로 덧셈(+)의 개수, 뺄셈(-)의 개수,
www.acmicpc.net
A = int(input())
B = list(map(int,input().split()))
C = list(map(int,input().split()))
Maximum = -1e9 // 1e9=10^9을 의미한다.
Minimum = 1e9
def solution(depth,count,add,sub,mul,div):
global Maximum,Minimum
if depth == A:
Maximum = max(count,Maximum)
Minimum = min(count,Minimum)
return
if add:
solution(depth+1,count+B[depth],add-1,sub,mul,div)
if sub:
solution(depth+1,count-B[depth],add,sub-1,mul,div)
if mul:
solution(depth+1,count*B[depth],add,sub,mul-1,div)
if div:
solution(depth+1,int(count/B[depth]),add,sub,mul,div-1)
solution(1,B[0],C[0],C[1],C[2],C[3])
print(Maximum)
print(Minimum)
C에 연산자들을 담고 solution 한번 돌 때 마다 count에 다가 값을 갱신, 쓴 연산자들을 한번씩 - 해주는 단순한 코드이다. 다만 나눗셈 할때만 조금 주의하면 될거같다.
'취준 > 백준' 카테고리의 다른 글
1003 - 파이썬 (0) | 2022.05.03 |
---|---|
14889 - 파이썬 (0) | 2022.05.02 |
15650 - 파이썬 (0) | 2022.04.05 |
15649 - 파이썬 (0) | 2022.04.05 |
18870 - 파이썬 (0) | 2022.04.04 |