🔻PS/Baekjoon

[Baekjoon] 백준 2961 도영이가 만든 맛있는 음식 Python

_니지 2024. 10. 4. 20:23

https://www.acmicpc.net/problem/2961

 

import sys
input = sys.stdin.readline
sys.setrecursionlimit(10**6)


n = int(input())
foods = []
visited = [0 for _ in range(n)]

for _ in range(n):
    s, b = map(int, input().split(" "))
    foods.append([s, b])


answer = []
min_val = 1000000000


def mul(arr):
    result = 1

    for a in arr:
        result *= a
    return result


def backtrack(dep, max_dep, pre):
    global min_val

    if dep == max_dep:
        temp = answer[::]
        sour = [x[0] for x in temp]
        bitter = [x[1] for x in temp]

        if abs(mul(sour) - sum(bitter)) < min_val:
            min_val = abs(mul(sour) - sum(bitter))

        return


    for i in range(pre, n):
        if not visited[i]:
            answer.append(foods[i])
            visited[i] = 1
            backtrack(dep + 1, max_dep, i+1)
            answer.pop()
            visited[i] = 0


for i in range(1, n+1):
    backtrack(0, i, 0)


print(min_val)
728x90
반응형