문제


일단 생각하기!
- 9명의 난쟁이 중 7명을 뽑아 키의 합이 100이 되는지 구해야하므로 순서가 중요하지 않은 조합 문제다.
- 다만, 문제에서 여러 경우가 있을 경우 아무거나 출력하라 하였으니 합이 100이 되는 조합이 한번만 출력되도록 해야한다. 이때
flag 변수를 사용하여 출력이 됐는지 체크해준다.
- 또는 한번 출력된 후 시스템을 강제 정상 종료시키는
System.exit(0)을 사용하는 방법도 생각해보았다. 여담으로 System.exit(1)은 비정상 종료라고 한다. 백준에서 찾아보니 사용해도 아무 상관없다고는 하나 두가지 방법을 모두 알아봐야겠다!
풀이
package BJ;
import java.util.Arrays;
import java.util.Scanner;
public class BJ_2309_일곱난쟁이_김유나 {
static int height[], real[], flag = 0, sum = 0;
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
height = new int[9];
real = new int[7];
for (int i = 0; i < 9; i++) {
height[i] = s.nextInt();
}
comb(0, 0, 0);
}
static void comb(int count, int start, int sum) {
if (flag == 1) return;
if (count == 7) {
if (sum == 100) {
flag++;
Arrays.sort(real);
for (int i = 0; i < 7; i++) {
System.out.println(real[i]);
}
}
return;
}
for (int i = start; i < 9; i++) {
real[count] = height[i];
comb(count + 1, i + 1, sum + real[count]);
}
}
}