문제링크
접근한 방법
- 조합
풀이방법
https://doongjeol.tistory.com/137?category=815887 참조
실수한점
- 다른 언어도 함께 공부하다보니, result = arr 이렇게 선언해버리는 실수를 하였다.
소스코드
import java.io.*;
import java.util.Arrays;
public class Q_2309_SevenDwarf {
public static int[] result;
public static int[] dwarf = new int[9];
public static void combination(int[] arr, int n, int r, int count, int depth){
if(count == r){
int sum = 0;
for(int i=0 ; i<arr.length ; i++){
sum += arr[i];
}
// null일 때 한번만 넣어주기
if(sum == 100 && result == null){
result = arr.clone();
}
return;
}
for(int i=depth ; i<n ; i++){
arr[count] = dwarf[i];
combination(arr, n, r, count+1, i+1);
}
}
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
for (int i = 0; i < dwarf.length; i++) {
dwarf[i] = Integer.parseInt(br.readLine());
}
combination(new int[7], dwarf.length, 7, 0, 0);
Arrays.sort(result);
for (int i = 0; i < result.length; i++) {
bw.write(result[i]+"\n");
}
br.close();
bw.close();
}
}
반응형
'자료구조&알고리즘 > 완전 탐색 (브루트 포스)' 카테고리의 다른 글
[백준] 순열 - 10819번 차이를 최대로 (Java) (0) | 2022.02.21 |
---|
댓글