https://www.acmicpc.net/problem/2961
2961번: 도영이가 만든 맛있는 음식
첫째 줄에 재료의 개수 N(1 ≤ N ≤ 10)이 주어진다. 다음 N개 줄에는 그 재료의 신맛과 쓴맛이 공백으로 구분되어 주어진다. 모든 재료를 사용해서 요리를 만들었을 때, 그 요리의 신맛과 쓴맛은
www.acmicpc.net
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main {
static int N, recipe[][], answer = Integer.MAX_VALUE;
static boolean isSelected[];
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
N = Integer.parseInt(st.nextToken());
recipe = new int[N][2];
isSelected = new boolean[N];
for (int i = 0; i < N; i++) {
st = new StringTokenizer(br.readLine());
for (int j = 0; j < 2; j++) {
recipe[i][j] = Integer.parseInt(st.nextToken());
}
}
subset(0, 1, 0);
System.out.println(answer);
}
public static void subset(int cnt, int S, int B) {
if (cnt == N) {
int select = 0;
for (int i = 0; i < N; i++) {
if (isSelected[i]) {
select++;
}
}
if (select > 0) {
answer = Math.min(answer, Math.abs(S - B));
}
return;
}
isSelected[cnt] = true;
subset(cnt + 1, S * recipe[cnt][0], B + recipe[cnt][1]);
isSelected[cnt] = false;
subset(cnt + 1, S, B);
}
}
'Baekjoon Online Judge > Java' 카테고리의 다른 글
[Baekjoon Online Judge] 1697 - 숨바꼭질 / Java (0) | 2021.08.17 |
---|---|
[Baekjoon Online Judge] 1874 - 스택 수열 / Java (0) | 2021.08.16 |
[Baekjoon Online Judge] 1244 - 스위치 켜고 끄기 / Java (0) | 2021.08.02 |
[Baekjoon Online Judge] 1100 - 하얀 칸 / Java (0) | 2021.07.16 |
[Baekjoon Online Judge] 2667 - 단지번호붙이기 / Java (0) | 2021.06.26 |