[백준] 15658번(연산자 끼워넣기 (2))

·2023년 9월 19일

백준 문제풀이

목록 보기
128/159

백준 15658번


최종 제출 코드

n = int(input())
array = list(map(int, input().split()))
sign = list(map(int, input().split()))

max_value = -1e9
min_value = 1e9

def dfs(index, value, plus, minus, multiple, divide):

  global max_value, min_value

  if index == n-1:
    max_value = max(max_value, value)
    min_value = min(min_value, value)
    return 

  if plus:
    dfs(index+1, value+array[index+1], plus-1, minus, multiple, divide)
  if minus:
    dfs(index+1, value-array[index+1], plus, minus-1, multiple, divide)
  if multiple:
    dfs(index+1, value*array[index+1], plus, minus, multiple-1, divide)
  if divide:
    dfs(index+1, int(value/array[index+1]), plus, minus, multiple, divide-1)

dfs(0, array[0], sign[0], sign[1], sign[2], sign[3])
print(max_value)
print(min_value)

◼️ 문제는 다르나 풀이는 연산자 끼워넣기 문제와 동일

  • 연산자의 개수가 피연산자 개수-1 보다 크지만 어차피 index == n-1 조건문을 통해 필요한 만큼만 연산을 함으로 별다른 수정은 필요없다
profile
백엔드 개발자가 되고 싶어요(22.8.15~)

0개의 댓글