반응형

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

 

2309번: 일곱 난쟁이

아홉 개의 줄에 걸쳐 난쟁이들의 키가 주어진다. 주어지는 키는 100을 넘지 않는 자연수이며, 아홉 난쟁이의 키는 모두 다르며, 가능한 정답이 여러 가지인 경우에는 아무거나 출력한다.

www.acmicpc.net

package com.ji.beakjoon.bruteforce;

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

/**
 * 일곱 난쟁이 2309번
 * 
 * @author ji
 *
 */
public class SevenDwarfs {
	
	public static int[] output = new int[7]; // 순열 출력을 위한 배열
	public static void main(String[] args) throws NumberFormatException, IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

		int[] allDwarfs = new int[9];
		for (int i = 0; i < 9; i++)
			allDwarfs[i] = Integer.valueOf(br.readLine());
		
		per1(allDwarfs, 0, allDwarfs.length, 7);
		
		Arrays.sort(output);
		for(int res : output)
			System.out.println(res);
	}

	//순열을 이용한 경우의 수
	static void per1(int[] arr, int depth, int n, int r) {
		if (depth == r) {
			int sum = 0;
			for (int i = 0; i < r; i++) 
				sum += arr[i];
			
			if(sum == 100) {
				for (int i = 0; i < r; i++) 
					output[i] = arr[i];
			}
			return;
		}

		for (int i = depth; i < n; i++) {
			swap(arr, depth, i);
			per1(arr, depth + 1, n, r);
			swap(arr, depth, i);
		}
	}

	static void swap(int[] arr, int depth, int i) { // 두 배열의 값을 바꾸는 Swap 함수
		int temp = arr[depth];
		arr[depth] = arr[i];
		arr[i] = temp;
	}

}
728x90

'[개발관련] > 코테준비' 카테고리의 다른 글

[백준] 최소 신장 트리  (0) 2021.08.07
[백준] 소문난 칠공주  (0) 2021.08.07
[백준] 토너먼트  (0) 2021.08.07
[백준] 로봇청소기  (0) 2021.08.07
[백준] 스타트링크  (0) 2021.08.07

+ Recent posts