[백준(python)] 2798번 : 블랙잭

hodu·2022년 10월 27일
0

algorithm

목록 보기
21/27

[백준(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)

스터디에서 내주신 문제 중 난이도가 있는 문제라고 하셨는데 정답비율이 상당히 높아 이거 먼저 구현해보았다..! 오 나 사실 브루스포트 천재일지도?(아님)

profile
안녕 세계!

0개의 댓글