관리 메뉴

Mini

3040번: 백설 공주와 일곱 난쟁이 본문

Algorithm/boj

3040번: 백설 공주와 일곱 난쟁이

Mini_96 2022. 8. 11. 17:46

 

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

 

3040번: 백설 공주와 일곱 난쟁이

매일 매일 일곱 난쟁이는 광산으로 일을 하러 간다. 난쟁이가 일을 하는 동안 백설공주는 그들을 위해 저녁 식사를 준비한다. 백설공주는 의자 일곱개, 접시 일곱개, 나이프 일곱개를 준비한다.

www.acmicpc.net

 

9C7로 조합생성

if(완성)

if(합==100) answer에 깊은복사

return

 

 

 

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

public class Main_3040_유동훈 {

	static int[] result;
	static int[] arr;
	static int r;
	static int[] answer;
	static boolean first=true;
	
	static void print()
	{
		for(int i=0;i<result.length;++i)
		{
			System.out.print(result[i]+" ");
		}
		System.out.println();
	}
	static void copy_arr()
	{
		for(int i=0; i<answer.length;++i)
		{
			answer[i]=result[i];
		}
	}
	
	/*
	 * r : nCr의 r, r만큼 result배열 생성해라.
	 * 
	 * 
	 */
	static void comb(int cnt, int start)
	{
		//result= new int[result.length][2];
		r=result.length;
		if(cnt==r) 
		{
			//print();
			int sum=0;
			for(int i=0; i<result.length;++i)
			{
				sum=sum+result[i];
			}
			if(sum==100) 
			{
				copy_arr();
				//first=false;
			}
			return;
		}
		
		for(int i=start;i<arr.length;++i)
		{
			result[cnt]=arr[i];
			comb(cnt+1,i+1);
		}

	}
	
	public static void main(String[] args) throws IOException {
		BufferedReader br= new BufferedReader(new InputStreamReader(System.in));
		//StringTokenizer st;
		
		arr=new int[9];
		for(int i=0; i<arr.length;++i)
		{
			arr[i]=Integer.parseInt(br.readLine());
		}
		//입력 끝
		
		result=new int[7];
		answer=new int[7];
		comb(0,0);
		
		StringBuilder sb= new StringBuilder();
		for(int i=0; i<answer.length;++i)
		{
			sb.append(answer[i]+"\n");
		}
		System.out.println(sb);
	}

}

'Algorithm > boj' 카테고리의 다른 글

11286번: 절대값 힙  (0) 2022.08.12
2961번 : 도영이가 만든 맛있는 음식  (0) 2022.08.11
16926번: 배열돌리기1  (0) 2022.08.10
2563번 : 색종이  (0) 2022.08.09
요세푸스 문제  (0) 2022.08.08