※ 글쓴이는 취미로 코딩을 익혀보는 사람이라 정확하지 않은 내용을 담고 있을 수 있다 ※
이번에 볼 문제는 백준 2961번 문제인 도영이가 만든 맛있는 음식이다.
문제는 아래 링크를 확인하자.
https://www.acmicpc.net/problem/2961
2961번: 도영이가 만든 맛있는 음식
첫째 줄에 재료의 개수 N(1 ≤ N ≤ 10)이 주어진다. 다음 N개 줄에는 그 재료의 신맛과 쓴맛이 공백으로 구분되어 주어진다. 모든 재료를 사용해서 요리를 만들었을 때, 그 요리의 신맛과 쓴맛은
www.acmicpc.net
모든 재료를 이용하지 않은 한 가지 경우를 제외한 2^N-1가지 요리의 신맛과 쓴맛의 정도를 직접 계산해 문제를 해결하자.
요리의 종류는 많아야 2^10-1 = 1023가지뿐이므로 충분히 빠르게 모든 경우의 수를 살펴볼 수 있다.
아래는 제출한 소스코드이다.
#include <iostream>
using namespace std;
int N;
int ans = 1000000000;
int sour[10], bitter[10];
void func(int idx, int s, int b) {
if (idx == N) {
if (b) ans = min(ans, abs(s - b));
return;
}
func(idx + 1, s, b);
func(idx + 1, s * sour[idx], b + bitter[idx]);
}
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
cin >> N;
for (int i = 0; i < N; i++) cin >> sour[i] >> bitter[i];
func(0, 1, 0);
cout << ans;
}
728x90
'BOJ' 카테고리의 다른 글
[BOJ 24783 // C++] Number Fun (0) | 2022.05.15 |
---|---|
[BOJ 24883 // C++] 자동완성 (0) | 2022.05.15 |
[BOJ 14011 // C++] Small PhD Restaurant (0) | 2022.05.14 |
[BOJ 14012 // C++] Large PhD Restaurant (0) | 2022.05.14 |
[BOJ 14009 // C++] Large Weird Measurements (0) | 2022.05.13 |