개발 연습장/백준 문제풀이

[파이썬, Python] 백준 2798: 블랙잭

LooanCheong 2023. 1. 17. 11:21
반응형

문제

https://www.acmicpc.net/problem/2798

 

2798번: 블랙잭

첫째 줄에 카드의 개수 N(3 ≤ N ≤ 100)과 M(10 ≤ M ≤ 300,000)이 주어진다. 둘째 줄에는 카드에 쓰여 있는 수가 주어지며, 이 값은 100,000을 넘지 않는 양의 정수이다. 합이 M을 넘지 않는 카드 3장

www.acmicpc.net

코드

n, m = map(int, input().split())
card = list(map(int,input().split()))
ans = 0

for x in range(n):
    for y in range(x+1 ,n):
        for z in range(y+1 ,n):
            card_sum = card[x] + card[y] + card[z]
            if card_sum <= m:
                ans = max(ans, card_sum)

print(ans)

설명

이 문제는 별도의 빠른 풀이법이 따로 존재하지 않는다.
모든 경우의 수를 시도해보는 알고리즘인데 이를 '브루트 포스(Brute force)'라고 칭한다.

따라서 반복문을 통해서 카드의 합계를 비교해주고 m을 넘지 않는 최대 수치를 비교하여 출력한다.

반응형