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

 

3040๋ฒˆ: ๋ฐฑ์„ค ๊ณต์ฃผ์™€ ์ผ๊ณฑ ๋‚œ์Ÿ์ด

๋งค์ผ ๋งค์ผ ์ผ๊ณฑ ๋‚œ์Ÿ์ด๋Š” ๊ด‘์‚ฐ์œผ๋กœ ์ผ์„ ํ•˜๋Ÿฌ ๊ฐ„๋‹ค. ๋‚œ์Ÿ์ด๊ฐ€ ์ผ์„ ํ•˜๋Š” ๋™์•ˆ ๋ฐฑ์„ค๊ณต์ฃผ๋Š” ๊ทธ๋“ค์„ ์œ„ํ•ด ์ €๋… ์‹์‚ฌ๋ฅผ ์ค€๋น„ํ•œ๋‹ค. ๋ฐฑ์„ค๊ณต์ฃผ๋Š” ์˜์ž ์ผ๊ณฑ๊ฐœ, ์ ‘์‹œ ์ผ๊ณฑ๊ฐœ, ๋‚˜์ดํ”„ ์ผ๊ณฑ๊ฐœ๋ฅผ ์ค€๋น„ํ•œ๋‹ค.

www.acmicpc.net

 

 

 

 

 

 

9๋ช… ์ค‘์—์„œ 7๋ช…์„ ์ฐพ๋Š” ๊ฒƒ์ด๋ฏ€๋กœ 9C7 -> ์กฐํ•ฉ ๋ฌธ์ œ์ด๋‹ค.

 

์กฐํ•ฉ 7๊ฐœ๋ฅผ ๋‹ค ์™„์„ฑํ•˜๊ณ  ๋ฆฌํ„ดํ•˜๊ธฐ ์ „์— ์กฐํ•ฉ์˜ ํ•ฉ์ด 100์ด ๋˜๋Š”์ง€ ํ™•์ธํ•ด์„œ ์ถœ๋ ฅํ•ด์ฃผ๋ฉด ๋œ๋‹ค.

 

 

 

 

 

์ฝ”๋“œ

import java.util.Scanner;

public class Main {
	static int[] hats;
	static boolean[] visited;
	static int[] result;

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		
		hats = new int[9];
		
		for(int i = 0; i < 9; i++) {
			hats[i] = sc.nextInt();
		}
		
		visited = new boolean[9];
		result = new int[7];
		
		combination(0, 0);

	}

	public static void combination(int start, int depth) {
		if(depth == 7) {
			int sum = 0;
			
			for(int n : result) {
				sum += n;
			}
			
			if(sum == 100) {
				for(int n : result) {
					System.out.println(n);
				}
			}
			
			return;
		}
		
		for(int i = start; i < 9; i++) {
			if(visited[i]) continue;
			
			visited[i] = true;
			result[depth] = hats[i];
			combination(i + 1, depth + 1);
			visited[i] = false;
		}
	}
}

 

 

 

 

 

 

๊ฒฐ๊ณผ

giraffe_