


조합을 이용하면 간단하게 풀이할 수 있다.
from itertools import combinations
n, m = map(int, input().split())
cards = list(map(int, input().split()))
max_com = 0
com_cards = list(combinations(cards,3))
for i in com_cards:
if sum(i) <= m and sum(i) > max_com:
max_com = sum(i)
print(max_com)
my_max = 0
for i in range(N - 2):
for j in range(i + 1, N - 1):
for k in range(j + 1, N):
my_sum = arr[i] + arr[j] + arr[k]
if my_max < my_sum <= M:
my_max = my_sum
print(my_max)


다시 풀어봐야 겠다.
n,m = map(int, input().split())
board = []
for _ in range(n):
color = input()
board.append(color)
cnt = []
for a in range(n-7):
for b in range(m-7):
w_index = 0
b_index = 0
for i in range(a, a+8):
for j in range(b, b+8):
if (i+j)%2 == 0:
if board[i][j] != "W":
w_index+=1
else:
b_index+=1
else:
if board[i][j] != "W":
b_index+=1
else:
w_index+=1
cnt.append(w_index)
cnt.append(b_index)
print(min(cnt))


최대한 5kg 봉지를 먼저 사용하고 남은 무게를 3kg으로 채우는 방식으로 풀이했다.
n = int(input())
count = 0
while n >= 0:
if n % 5 == 0: # 5kg 봉지로 나누어 떨어지는 경우
count += n // 5 # 5kg 봉지 개수 추가
print(count)
break
n -= 3 # 5kg으로 나눠지지 않으면 3kg을 하나 사용
count += 1
else:
print(-1) # 정확한 무게를 만들 수 없는 경우
n = int(input())
# 5kg 봉지를 최대한 많이 사용
for i in range(n // 5, -1, -1): # 가장 큰 5kg 봉지 개수부터 시작
remain = n - (5 * i) # 5kg을 최대한 사용한 후 남은 무게
if remain % 3 == 0: # 남은 무게가 3kg으로 나누어 떨어지는 경우
print(i + (remain // 3)) # 5kg 개수 + 3kg 개수 출력
break
else:
print(-1) # 정확한 무게를 만들 수 없는 경우
n = int(input())
dp = [-1] * (n + 1) # dp[i] = i kg을 만들 수 있는 최소 봉지 수 (불가능하면 -1)
if n >= 3:
dp[3] = 1
if n >= 5:
dp[5] = 1
for i in range(6, n + 1): # 3kg, 5kg을 이용해 dp 갱신
if dp[i - 3] != -1:
dp[i] = dp[i - 3] + 1
if dp[i - 5] != -1:
dp[i] = min(dp[i], dp[i - 5] + 1) if dp[i] != -1 else dp[i - 5] + 1
print(dp[n])