[Python] 백준 2798

eun·2024년 1월 13일

문제 2798

위 문제를 먼저 이해해보자.

  • 첫째 줄에는 카드의 개수와 목표하는 수가 주어진다.
  • 다음 줄에는 각 카드의 수가 주어진다.
  • 각 카드를 이용하여 목표하는 수를 초과하지 않으면서 가장 가까운 카드 3장의 합을 출력하는 문제이다.
# 2798

import sys

n, m = map(int, input().split())

num = list(map(int, sys.stdin.readline().split()))

ans = []

for i in range(n):
    for j in range(i+1, n):
        for k in range(j+1, n):
            sum_lst = num[i] + num[j] + num[k]
            if sum_lst <= m:
                ans.append(sum_lst)

print(max(ans))

해당 문제는 브루트 포스 (완전탐색)을 이용하여 푼 문제이다.
m을 초과하지 않는 3가지 카드의 덧셈 중 가장 큰 것을 출력하면 해결된다.

0개의 댓글