문제풀이/BOJ
[Python] BOJ/백준 2798번 블랙잭
서채리
2021. 7. 28. 02:36
[문제]
https://www.acmicpc.net/problem/2798
2798번: 블랙잭
첫째 줄에 카드의 개수 N(3 ≤ N ≤ 100)과 M(10 ≤ M ≤ 300,000)이 주어진다. 둘째 줄에는 카드에 쓰여 있는 수가 주어지며, 이 값은 100,000을 넘지 않는 양의 정수이다. 합이 M을 넘지 않는 카드 3장
www.acmicpc.net

[풀이]
간단한 문제인데 삼중 for문의 범위 지정이 가장 신경 써야 할 부분 같다.
특정 카드를 한 장 뽑았다면 다시 그 카드를 뽑을 수 없기 때문에 세 반복문의 index가 겹치지 않아야 한다.
세 카드를 더했을 때 m을 넘지 않는 값 중 가장 큰 값을 구해준다.
[코드]
import sys
if __name__ == '__main__':
n, m = map(int, sys.stdin.readline().split())
card = sorted(list(map(int, sys.stdin.readline().split())))
res = 0
for i in range(0, n-2):
for j in range(i+1, n-1):
for k in range(j+1, n):
if card[i] + card[j] + card[k] > m:
continue
else:
res = max(res, card[i] + card[j] + card[k])
print(res)