기록과 정리의 공간

[알고리즘] 백준 2798번 : 블랙잭 본문

문제풀이/백준(BOJ)

[알고리즘] 백준 2798번 : 블랙잭

딸기맛도나쓰 2020. 7. 17. 17:45

백준 2798번 : 블랙잭 (문제 링크)

  • 사용 언어 : 파이썬(Python)
  • 문제 유형 : 배열, 완전탐색
  • 난이도 : 하

소스코드

import sys

n, m = map(int, sys.stdin.readline().split())
cards = list(map(int, sys.stdin.readline(). split()))

sum_cards = 0
for i in range(n-2):
    for j in range(i+1, n-1):
        for k in range(j+1, n):
            temp = cards[i] + cards[j] + cards[k]
            if temp <= m and sum_cards < temp:
                sum_cards = temp

print(sum_cards)

설명

카드를 3장골라야 하므로, 삼중반복문을 사용하여 가능한 모든 조합을 탐색한다. 3장의 합이 m을 넘지 않는 값들 중 최대값이 답이 된다. temp변수에 현재 조합의 합을 저장하고, 그 값이 m을 넘지 않으면서 sum_cards보다 크다면, sum_cardstemp가 된다. 반복문이 종료되면 sum_cardsm을 넘지 않는 값들 중 최대값을 가지고 있게 된다.

Comments