백준 2961 도영이가 만든 맛있는 음식

김민영·2023년 2월 8일
0

알고리즘

목록 보기
115/125

과정

  • 모든 음식 조합에 대해서 신맛과 쓴맛의 차를 구해봐야한다.
  • N개의 요리가 있으면, 재료 1개, 2개, 3개, ... N개로 이루어진 수열을 먼저 구해야한다.
    • 재료는 중복되면 안됨
    • 재료에 순서는 필요 없음
  • 구한 조합에 대해서 신맛과 쓴맛의 차를 구한다
import sys

N = int(input())

ingradient = [tuple(map(int, sys.stdin.readline().split())) for _ in range(N)]

# 수열 만들기
result = []

ans = 1e9

# 중복 없이 순열 만들기
def makeNums(goal, level, idx):

    # 종료 조건
    if level == goal:
        # 신맛과 쓴 맛의 차를 구하기
        jucy = 1
        bitter = 0
        for sub in result:
            jucy *= sub[0]
            bitter += sub[1]

        global ans
        if ans > abs(jucy - bitter):
            ans = abs(jucy - bitter)

        return
        
    for i in range(idx, N):
        result.append(ingradient[i])
        makeNums(goal, level + 1, i + 1)
        result.pop()

for i in range(1, N+1):
    makeNums(i, 0, 0)

print(ans)
profile
노션에 1차 정리합니당 - https://cream-efraasia-f3c.notion.site/4fb02c0dc82e48358e67c61b7ce8ab36?v=

0개의 댓글