알고리즘 & 코딩테스트

[백준] 2798번 블랙잭

Haksae 2022. 3. 20. 03:40

⛏ 문제 파악

  • 새로운 블랙잭! N개의 카드가 주어지고, 그 중 3장을 뽑아 제시된 숫자 M과 가장 가까운 숫자를 만드는 알고리즘
  • 브루트 포스 방식으로 풀면 된다.

👉🏻  답안

from sys import stdin
N, M = map(int, input().split(' '))
cards = list(map(int, stdin.readline().split(' ')))
length = len(cards)

result = 0

for i in range(0,length):
    for j in range(i+1,length):
        for k in range(j+1,length):
            sum = cards[i]+cards[j]+cards[k]
            if M >= sum:
                result = max(result,sum)
                
print(result)

📑  간단한 설명

  • 3중 포문을 통해서, 모든 경우의 수를 구하고,
  • M이 sum보다 크거나 같으면, 최대값을 result에 대입