문제 바로가기 : https://www.acmicpc.net/problem/16938
메모리 : 14216KB
시간 : 140ms
언어 : Java 11
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
int N = Integer.parseInt(st.nextToken());
int L = Integer.parseInt(st.nextToken());
int R = Integer.parseInt(st.nextToken());
int X = Integer.parseInt(st.nextToken());
int[] arr = new int[N];
st = new StringTokenizer(br.readLine());
for (int i = 0; i < N; i++) {
arr[i] = Integer.parseInt(st.nextToken());
}
int ans = 0;
//2의 N제곱만큼 경우의 수가 있다.
for (int i = 0; i < (1 << N); i++) {
int sum = 0;
int max = 0;
int min = Integer.MAX_VALUE;
for (int j = 0; j < N; j++) {
//1이면 해당 idx는 선택받은것
if ((i & 1 << j) != 0) {
sum += arr[j];
max = Math.max(max, arr[j]);
min = Math.min(min, arr[j]);
}
}
if (L <= sum && sum <= R && (max - min) >= X) {
ans++;
}
}
System.out.println(ans);
}
}
비트마스크를 이용한 조합만들기
'Algorithm' 카테고리의 다른 글
[Algo] 백준 23029 시식 코너는 나의 것 JAVA (0) | 2024.05.07 |
---|---|
[Algo] 백준 16236 아기 상어 JAVA (0) | 2024.05.07 |
[Algo] 백준 23304 아카라카 JAVA (0) | 2024.05.07 |
[Algo] 백준 1106 호텔 JAVA (0) | 2024.05.07 |
[Algo] 백준 12865 평범한 배낭 JAVA (0) | 2024.05.07 |