https://www.acmicpc.net/problem/16938
N,L,R,X=map(int,input().split())
arr=list(map(int,input().split()))
answer=0
for i in range(2<<(N-1)):
maxValue=0
minValue=1e9
sumValue=0
for j in range(N):
if i&(1<<j):
sumValue+=arr[j]
maxValue=max(maxValue,arr[j])
minValue=min(minValue,arr[j])
if L<=sumValue<=R and maxValue-minValue>=X:
answer+=1
print(answer)
비트 마스킹을 통해 모든 부분 집합을 구하는 문제이다. 비트를 이용해서 모든 경우의 수를 2를 비트 이동시켜서 구해준 후, 있고 없고에 따라 &연산으로 확인해주면 된다.
이렇게 Python로 백준의 "캠프 준비" 문제를 해결해보았습니다. 코드와 개념 설명을 참고하여 문제를 해결하는 데 도움이 되셨길 바랍니다! 😊