1 ๋ถ„ ์†Œ์š”

๐Ÿ“ [D4_1865] ๋™์ฒ ์ด์˜ ์ผ ๋ถ„๋ฐฐ

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;


public class Solution {
	static int N;
	static double max;
	static double[][] arr;
	static boolean[] v;

	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringTokenizer st;
		StringBuilder sb = new StringBuilder();

		// ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค
		int tc = Integer.parseInt(br.readLine());

		for (int t = 1; t <= tc; t++) {
			sb.append("#").append(t).append(" ");

			// N
			N = Integer.parseInt(br.readLine());

			// ๋‹ด๋‹น ๋ฐฐ์—ด
			arr = new double[N][N];

			// ๋ฐฉ๋ฌธ ์ฒดํฌ
			v = new boolean[N];

			// ํ™•๋ฅ  ์ž…๋ ฅ
			for (int i = 0; i < N; i++) {
				st = new StringTokenizer(br.readLine(), " ");
				for (int j = 0; j < N; j++) {
					arr[i][j] = Double.parseDouble(st.nextToken());
					arr[i][j] /= 100;
				}
			}

			max = 0;

			run(0,1.0);
			String str = String.format("%.6f", max*100);
			sb.append(str).append("\n");
		}
		System.out.println(sb);
	}

	static void run(int lev, double sum) {
		// ๊ฐ€์ง€์น˜๊ธฐ ( ์‹œ๊ฐ„๋ณต์žก๋„๋ฅผ ์ค„์ด๋Š”๋ฐ ์ œ์ผ ์ค‘์š” )
		if(sum <= max) return;
		// ๊ธฐ์ €์กฐ๊ฑด
		if (lev == N) {
			max = Math.max(max, sum);
			return;
		}

		for(int i=0; i<N; i++) {
			// ์ด๋ฏธ ๋ฐฉ๋ฌธํ–ˆ์œผ๋ฉด ํ†ต๊ณผ
			if(v[i]) continue;

			// ๋ฐฉ๋ฌธ ์ฒ˜๋ฆฌ
			v[i] = true;

			// ์žฌ๊ท€
			run(lev+1, sum * arr[lev][i]);

			// ๋ฐฑํŠธ๋ž˜ํ‚น
			v[i] = false;
		}
	}
}

๐Ÿค” ๋‚˜์˜ ์ƒ๊ฐ

์žฌ๊ท€๋ฅผ ํ†ตํ•ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ–ˆ๋‹ค.
๊ฐ™์€ ์—ด์€ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— boolean ๋ฐฐ์—ด์„ ํ†ตํ•ด ์—ด ์š”์†Œ์˜ ๋ฐฉ๋ฌธ์ฒ˜๋ฆฌ๋ฅผ ํ•ด์ฃผ์—ˆ๊ณ 
์™„ํƒํ˜•์‹์œผ๋กœ ์ฒดํฌ๋ฅผ ํ•ด์ค€๋‹ค.
๊ทธ๋Ÿฌ๋‚˜ ์—ฌ๊ธฐ์„œ ์ค‘์š”ํ•œ ๊ฒƒ์€ ๊ฐ€์ง€์น˜๊ธฐ์ด๋‹ค.
๊ฐ€์ง€์น˜๊ธฐ๋ฅผ ์•ˆํ•ด์ค€๋‹ค๋ฉด ์‹œ๊ฐ„์ดˆ๊ณผ๊ฐ€ ๋‚œ๋‹ค.
์‹œ๊ฐ„ ๋ณต์žก๋„๋ฅผ ์ค„์ด๊ธฐ์— ๊ฐ€์žฅ ์ค‘์š”ํ•œ ์ฝ”๋“œ๋Š” if(sum <= max) return; ์ด๋‹ค.
์ด ์ฝ”๋“œ๋ฅผ ํ†ตํ•ด ๊ตณ์ด ๋งจ ๋ฐ‘์— ํ–‰๊นŒ์ง€ ๊ฐˆ ํ•„์š”๊ฐ€ ์—†๋Š” ๊ฒƒ์„ ๊ฐ€์ง€์น˜๊ธฐ ํ•ด์ฃผ๋ฉด์„œ ์‹œ๊ฐ„ ๋ณต์žก๋„๋ฅผ ํ™• ์ค„์—ฌ์ค€๋‹ค.
๊ทธ๋ฆฌ๊ณ  ๋งˆ์ง€๋ง‰์œผ๋กœ ์†Œ์ˆ˜ 6์ž๋ฆฌ๊นŒ์ง€ ์ถœ๋ ฅํ•ด์•ผํ•˜๊ธฐ ๋•Œ๋ฌธ์— String.format์„ ํ†ตํ•ด ์„ค์ •์„ ํ•ด์ค€๋‹ค.