개인적으로 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

+ Recent posts