1450번 문제이다.
사진을 누르면 문제로 이동한다.
문제는 Python언어로 구현하였다.
import sys
def brute_force(index, w, things, size, result):
if index >= size:
result.append(w)
return
brute_force(index + 1, w, things, size, result)
brute_force(index + 1, w+things[index], things, size, result)
def binary_search(start, end, key, arr):
while start < end :
mid = (start + end) // 2
if arr[mid] <= key:
start = mid + 1
else :
end = mid
return end
N, C = map(int, sys.stdin.readline().split())
things = list(map(int, sys.stdin.readline().split()))
a_things = things[:N // 2]
b_things = things[N // 2:]
a_result, b_result = [], []
brute_force(0, 0, a_things, len(a_things), a_result)
brute_force(0, 0, b_things, len(b_things), b_result)
b_result.sort()
b_len = len(b_result)
cnt = 0
for i in a_result:
if C - i < 0 :
continue
cnt += binary_search(0,b_len,C-i,b_result)
print(cnt)
'Algorithm' 카테고리의 다른 글
[BAEKJOON] 10430번: 나머지 (0) | 2021.11.22 |
---|---|
[BAEKJOON] 1753번: 최단경로 (0) | 2021.11.16 |
[BAEKJOON] 10451번: 순열 사이클 (0) | 2021.11.08 |
[BAEKJOON] 2667번: 단지번호붙이기 (0) | 2021.11.08 |
[BAEKJOON] 13977번: 이항 계수와 쿼리 (0) | 2021.11.03 |