본문 바로가기

# Coding/# 백준

[백준 / 16938] 캠프 준비 - Python

728x90
반응형

https://www.acmicpc.net/problem/16938

 

16938번: 캠프 준비

난이도가 10, 30인 문제를 고르거나, 20, 30인 문제를 고르면 된다.

www.acmicpc.net

 

<전체 코드>

from collections import deque

N, L, R, X = map(int, input().split())
problems = list(map(int, input().split()))

problems.sort(reverse=True)

answer = 0
queue = deque()
while problems:
    biggest = problems.pop(0)
    if biggest < R:
        # sum, biggest, cnt, arr
        queue.append([biggest, biggest, biggest, 1, problems])

    while queue:
        now, biggest, smallest, cnt, arr = queue.pop()
        if L <= now <= R and cnt > 1:
            if biggest - smallest >= X:
                answer += 1
        l = len(arr)
        for i in range(l):
            num_sum = now+arr[i]
            if num_sum <= R:
                queue.append([num_sum, biggest, arr[i], cnt+1, arr[i+1:]])

print(answer)
728x90
반응형