[백준(python)] 2798번 : 블랙잭
https://www.acmicpc.net/problem/2798
브루스포트(brute force)를 이용하는 문제.
브루스포트란? 답이 나올 때 까지 모든 조합을 다 탐색한다.
처음에는 segment tree를 이용해 보려고 했는데, 모든 조합이 아닌 첫자리만 계산하는 것을 깨닫고 다시 구했다.
그냥 단순하게 모든 경우의 수를 다 구해서 답을 구하면 된다.
# 0. 입력받기
import sys
input = sys.stdin.readline
N, M = map(int,input().split())
cards = list(map(int,input().split()))
sum = 0
# 1. 모든 수 계산
for i in range(N):
for j in range(i+1, N-1):
for k in range(j+1, N):
# 첫자리를 더한 수가 M보다 클 경우 다시 뽑음
if cards[i] + cards[j] + cards[k] > M:
continue
# 아니라면 M과 최대한 가깝게 만들기
else:
sum = max(sum, (cards[i]+cards[j]+cards[k]))
print(sum)
스터디에서 내주신 문제 중 난이도가 있는 문제라고 하셨는데 정답비율이 상당히 높아 이거 먼저 구현해보았다..! 오 나 사실 브루스포트 천재일지도?(아님)