본문 바로가기
백준알고리즘/백트래킹

(Python/🥈1)백준 알고리즘 14888번: 연산자 끼워넣기

by windy7271 2022. 12. 5.
728x90
반응형

문제 출처: https://www.acmicpc.net/problem/14888

 

14888번: 연산자 끼워넣기

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

www.acmicpc.net

풀이:

import sys

N = int(input())
number = list(map(int,input().split()))
op = list(map(int,input().split()))
max_res, min_res = -sys.maxsize -1, sys.maxsize

def solution(num,idx,a,b,c,d):
    global max_res,min_res

    if idx == N:
        max_res = max(max_res, num)
        min_res = min(min_res, num)
    if a > 0:
        solution(num + number[idx], idx+1, a-1, b, c, d)
    if b > 0:
        solution(num - number[idx], idx+1, a, b-1, c, d)
    if c > 0:
        solution(num * number[idx], idx+1, a, b, c-1, d)
    if d > 0:
        solution(int(num / number[idx]), idx+1, a, b, c, d-1)


solution(number[0], 1,op[0], op[1], op[2], op[3])
print(max_res,min_res, sep='\n')

 

else, elif 를 쓰면 안되는 이유는 number를 순서대로 써야하기 때문에 모든 경우 다 생각해야함,

반응형

댓글