๐Ÿ“ ์•Œ๊ณ ๋ฆฌ์ฆ˜/BruteForce

[๋ฐฑ์ค€] 2961๋ฒˆ ๋„์˜์ด๊ฐ€ ๋งŒ๋“  ๋ง›์žˆ๋Š” ์Œ์‹

์ ์ด 2021. 8. 17. 13:53
๋ฐ˜์‘ํ˜•

๋ฌธ์ œ

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

 

2961๋ฒˆ: ๋„์˜์ด๊ฐ€ ๋งŒ๋“  ๋ง›์žˆ๋Š” ์Œ์‹

์ฒซ์งธ ์ค„์— ์žฌ๋ฃŒ์˜ ๊ฐœ์ˆ˜ N(1 ≤ N ≤ 10)์ด ์ฃผ์–ด์ง„๋‹ค. ๋‹ค์Œ N๊ฐœ ์ค„์—๋Š” ๊ทธ ์žฌ๋ฃŒ์˜ ์‹ ๋ง›๊ณผ ์“ด๋ง›์ด ๊ณต๋ฐฑ์œผ๋กœ ๊ตฌ๋ถ„๋˜์–ด ์ฃผ์–ด์ง„๋‹ค. ๋ชจ๋“  ์žฌ๋ฃŒ๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์š”๋ฆฌ๋ฅผ ๋งŒ๋“ค์—ˆ์„ ๋•Œ, ๊ทธ ์š”๋ฆฌ์˜ ์‹ ๋ง›๊ณผ ์“ด๋ง›์€

www.acmicpc.net

ํ’€์ด

์žฌ๋ฃŒ๋ฅผ ์กฐํ•ฉํ•˜์—ฌ ์“ด๋ง›๊ณผ ์‹ ๋ง›์˜ ์ฐจ์ด๋ฅผ ๊ฐ€์žฅ ์ ๊ฒŒ ๋งŒ๋“ค์–ด์•ผ ํ•œ๋‹ค.

๋”ฐ๋ผ์„œ '์กฐํ•ฉ' ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•œ๋‹ค.

์กฐํ•ฉ ํ›„, ๊ธฐ์ €์กฐ๊ฑด์ด ๋งŒ์กฑํ•˜๋ฉด ํ•ด๋‹น ์กฐํ•ฉ์˜ ์‹ ๋ง›๊ณผ ์“ด๋ง›์„ ๊ตฌํ•˜๊ณ  ์กฐํ•ฉ ์ค‘ ๊ฐ€์žฅ ์ตœ์†Ÿ๊ฐ’์„ ์ฐพ๋Š”๋‹ค.

์ฝ”๋“œ

import java.io.*;
import java.util.*;

public class Main{
	static int n;
	static int[][] tasty;
	static boolean[] isSelected;
	static int min=Integer.MAX_VALUE;
	
	public static void main(String[] args) throws Exception {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		n = Integer.parseInt(br.readLine());
		tasty = new int[n][2];
		isSelected = new boolean[n];
		for(int i =0 ; i < n ; i++) {
			StringTokenizer st = new StringTokenizer(br.readLine(), " ");
			tasty[i][0] = Integer.parseInt(st.nextToken());
			tasty[i][1] = Integer.parseInt(st.nextToken());
		}
		cook(0);
		System.out.println(min);
		br.close();
	}

	public static void cook(int cnt) {
		int sour = 1;
		int bitter = 0;
		if(cnt == n) {
			for(int i =0 ; i < n ; i++) {
				if(isSelected[i]) {
					sour *= tasty[i][0];
					bitter += tasty[i][1];
				}
			}
			if(sour!= 1 && bitter!=0) min = Math.min(min, Math.abs(sour-bitter));
			return;
		}
		isSelected[cnt] = true;
		cook(cnt+1);
		isSelected[cnt] = false;
		cook(cnt+1);
	}
}
๋ฐ˜์‘ํ˜•