본문 바로가기
코딩 테스트/DFS, BFS

연산자 끼워넣기

by hazel_ 2021. 1. 31.

p.349

 

permutations로 풀려다가 시간 초과가 나서 dfs로 변경 ㅠㅠㅠ

import sys

input=sys.stdin.readline
n=int(input())
num=list(map(int, input().split()))
add,sub,mul,div=map(int, input().split()) # 연산자 받기

max_result=-1e9
min_result=1e9

def dfs(i, temp, add, sub, mul, div):
  global max_result, min_result
  if i==n:
    max_result=max(temp, max_result)
    min_result=min(temp, min_result)
  else:
    if add:
      dfs(i+1, temp+num[i], add-1, sub, mul, div)
    if sub:
      dfs(i+1, temp-num[i], add, sub-1, mul, div)
    if mul:
      dfs(i+1, temp*num[i], add, sub, mul-1, div)
    if div:
      dfs(i+1, int(temp/num[i]), add, sub, mul, div-1)

dfs(1, num[0], add, sub, mul, div)
print(max_result)
print(min_result)

'코딩 테스트 > DFS, BFS' 카테고리의 다른 글

인구 이동  (0) 2021.02.03
감시 피하기  (0) 2021.01.31
괄호 변환  (0) 2021.01.29
경쟁적 전염  (0) 2021.01.27
연구소  (0) 2021.01.26

댓글