https://www.acmicpc.net/problem/3040
9개의 숫자가 입력으로 들어올 때,
9개의 숫자 중 7개의 숫자 합이 정확히 100이 되도록하는 7개의 수를 찾아라
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st;
int[] arr = new int[9];
for (int i = 0; i < arr.length; i++) {
st = new StringTokenizer(br.readLine());
arr[i] = Integer.parseInt(st.nextToken());
}
recursive(arr,new int[7], 0, 0);
}
private static void recursive(int[] arr, int[] sel, int aIdx, int sIdx) {
// basis part
if (sel.length == sIdx) {
int sum = 0;
for (int i = 0; i < sel.length; i++) {
sum = sum + sel[i];
}
if (sum == 100) {
for (int i = 0; i < sel.length; i++) {
System.out.println(sel[i]);
}
}
return;
}
// inductive part
for (int i = aIdx; i < arr.length; i++) {
sel[sIdx] = arr[i];
recursive(arr, sel, i + 1, sIdx + 1);
}
}
}
순서를 상관하지 않으며, 중복인 수를 허용하지 않는 숫자 배열을 찾는 문제이므로 조합으로 문제를 해결해야 합니다.
7개의 숫자를 찾은 후 더한 값이 100이 되는지 여부를 확인하여 100이라면 각 수를 출력하면 되는 단순한 조합 문제입니다.
~~
해당 코드는 에디터가 코드 연습을 위해 직접 작성하였습니다.
혹시 오류가 있거나 더 좋은 코드 방향성을 아시는 분은 댓글로 남겨주시면 감사하겠습니다!
[SWEA] 9229 한빈이 Spot Mart (D3, 조합) - Java (0) | 2023.02.25 |
---|---|
[Baekjoon] 백준 10163 색종이 (B1, 구현) - Java (1) | 2023.02.21 |
[SWEA] 1228 암호문1 (D3, 구현) - java (0) | 2023.02.13 |
[SWEA] 1859. 백만 장자 프로젝트 (D2^) - Python (0) | 2022.11.24 |
[Baekjoon] 백준 1541번 문제 풀이 (Python) (0) | 2022.05.20 |