[Algorithm] 백준 2798: 블랙잭- Python(파이썬)

하이초·2022년 7월 2일
0

Algorithm

목록 보기
5/94
post-thumbnail

💡 백준 2798: 블랙잭

주어진 카드 더미 n개 중 3개를 고르는 전체 경우 중 가장 m에 가까운 경우의 합을 출력


🌱 코드 in Python

알고리즘: Brute Force

import sys

n, m = map(int, sys.stdin.readline().split())
ret = 0
card = list(map(int, sys.stdin.readline().split()))
for i in range(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):
				ret = max(ret, card[i] + card[j] + card[k])
print (ret)

모든 경우를 돌며 m을 넘지 않는 최댓값을 뽑기 위해 브루트포스 알고리즘을 사용

n개의 카드 더미 중 3개를 골라야 하므로, 첫번째 카드는 n - 2까지의 선택이 가능하고, 두번째 카드는 첫번째 카드를 제외한 후 n - 1까지의 선택이 가능하며, 세번째 카드는 기선택된 첫번째 + 두번째 카드를 제외한 후 n까지의 선택이 가능하다.

따라서 위와 같이 반복문을 돌리며, 선택된 카드 3개의 합이 m을 넘지 않을 경우 기존의 max값과 비교하며 최댓값을 저장 후 출력한다


🧠 기억하자

이번 문제는 정말 딱히 어려울 게 없는 기본적인 문제였다
반복문에서의 인덱스 설정, m을 넘지 않도록 하는 조건문 이 두 가지만 잘 신경쓴다면
무난하게 풀 수 있는 문제였다

백준 2798 바로가기

profile
개발국대가 되는 그 날까지. 지금은 개발 응애.

0개의 댓글