[python] 백준 2798번

도덩이의 개발 일지·2024년 9월 3일

백준

목록 보기
62/131
post-thumbnail

안녕하세요 !

오늘은 백준 - 블랙잭 문제를 가지고 왔습니다.


문제 설명


해결 방법

이 문제를 해결한 방법을 간략히 정리해보자면 아래와 같습니다.

  1. 입력을 받는다
  2. 카드를 3개 선택할 수 있는 모든 경우의 수를 구하고 카드들의 합을 구한다.
  3. M을 넘지 않으면서도 가장 가까운 수를 구한다.

  1. 입력을 받는다.
import sys
nm = list(map(int,sys.stdin.readline().strip().split()))
card = list(map(int,sys.stdin.readline().strip().split()))

  1. 카드를 3개 선택할 수 있는 모든 경우의 수를 구하고 카드들의 합을 구한다.

순서가 중요하지 않다보니 순열이 아닌 조합을 사용해서 카드를 선택해준다.

from itertools import combinations
three_card = list(combinations(card, 3))

  1. M을 넘지 않으면서도 가장 가까운 수를 구한다.

가장 가까운 수를 구할 때 M과의 차이가 가장 작은 수를 구했다.

min_gap = 100000
answer = 0
for i in sum_card:
    if i <= nm[1]:
        gap = nm[1] - i
        if min_gap > gap:
            min_gap = gap
            answer = i
print(answer)

전체 코드

import sys
from itertools import combinations
nm = list(map(int,sys.stdin.readline().strip().split()))
card = list(map(int,sys.stdin.readline().strip().split()))
three_card = list(combinations(card, 3))
sum_card = []
for each_card in three_card:
    sum_card.append(sum(each_card))
min_gap = 100000
answer = 0
for i in sum_card:
    if i <= nm[1]:
        gap = nm[1] - i
        if min_gap > gap:
            min_gap = gap
            answer = i
print(answer)
profile
말하는 감자에서 개발자로 ( ´͈ ᵕ `͈ )◞♡

0개의 댓글