[알고리즘] 백준 2961 - 도영이가 만든 맛있는 음식

do_large·2020년 8월 12일
0

알고리즘

목록 보기
3/50
post-thumbnail

#include <stdio.h>

int N, min;
int ingre[10][2];

void mixIngre(int, int, int);

int main(void) {
    scanf("%d", &N);

    for (int i = 0; i < N; i++) {
        scanf("%d %d", &ingre[i][0], &ingre[i][1]);
    }

    // min의 초기값
    if (ingre[0][0] > ingre[0][1]) {
        min = ingre[0][0] - ingre[0][1];
    }
    else {
        min = ingre[0][1] - ingre[0][0];

    }

    mixIngre(0, 1, 0);
    printf("%d\n", min);

    return 0;
}

void mixIngre(int index, int s_sum, int b_sum) {
    if (index > N) {
        return;
    }

    mixIngre(index + 1, s_sum * ingre[index][0], b_sum + ingre[index][1]);
    mixIngre(index + 1, s_sum, b_sum);

    // main에서 mixIngre를 호출할때 넣어준 인자인 1과 0이 min에 영향을 주지않게 하기위해서 return해줌
    if (s_sum == 1 && b_sum == 0) {
        return;
    }

    // s의 곱과 b의 합의크기를 비교한 뒤 더 큰값에서 작은값을 빼준후에 min과 비교해서 min보다 작으면 min에 넣어주기
    if (s_sum > b_sum) {
        if (s_sum - b_sum < min) {
            min = s_sum - b_sum;
        }
    }
    else {
        if (b_sum - s_sum < min) {
            min = b_sum - s_sum;
        }
    }


}

0개의 댓글