- 생각
브루트포스 문제이다. 전체 경우의 수에 대해서 중량 500이 되는지 확인하면 된다.
- 코드
정답 코드 : 백트래킹을 활용하여 풀었다.
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Algorithm {
static int N, K, answer;
static int[] array;
static boolean[] check;
public static void main(String[] args) throws Exception {
SetData();
BackTracking(0, 0);
System.out.println(answer);
}
private static void SetData() throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
N = Integer.parseInt(st.nextToken());
K = Integer.parseInt(st.nextToken());
array = new int[N];
check = new boolean[N];
answer = 0;
st = new StringTokenizer(br.readLine());
for(int i = 0; i < N; i++)
array[i] = Integer.parseInt(st.nextToken()) - K;
}
private static void BackTracking(int count, int sum) {
// Basecase
if(count == N) {
answer++;
return;
}
for(int i = 0; i < N; i++) {
if(!check[i] && sum + array[i] >= 0) {
check[i] = true;
BackTracking(count + 1, sum + array[i]);
check[i] = false;
}
}
}
}
'algorithm' 카테고리의 다른 글
[JAVA] 백준 3187번 : 양치기 꿍 (0) | 2020.12.11 |
---|---|
[JAVA] 백준 11055번 : 가장 큰 증가하는 부분 수열 (0) | 2020.12.10 |
[JAVA] 백준 20004번 : 베스킨라빈스 31 (0) | 2020.12.07 |
[JAVA] 백준 14241번 : 슬라임 합치기 (0) | 2020.12.07 |
[JAVA] 백준 1931번 : 회의실 배정 (0) | 2020.12.04 |