알고리즘 문제 풀기/백준(Baekjoon)
[백준 알고리즘] 2798번 블랙잭 - 브루트포스 알고리즘, 파이썬
hibscus
2021. 2. 20. 00:43
- 2798번 블랙잭
🎮 문제 접근 방법
1) 인덱스를 통해 3가지 카드를 뽑을 수 있는 경우의 수를 구한다 ex) 0, 1, 2 / 0, 1, 3 / 0, 1, 4 ......
- 단, 합은 blackjack 숫자를 넘지 못함!
(=> blackjack에 해당하는 숫자가 나올때는 더이상 큰값이 없으므로 바로 출력 가능)
🎈 시간을 줄이기 위해서는
1) blackjack에 해당하는 숫자가 나올때는 바로 리턴하도록
2) 카드가 3개이므로 N-2까지만 돌면 된다.
N, M = map(int, input().split())
arr = list(map(int, input().split()))
def blackjack(N, M):
max_val = 0
for i in range(N-2):
for j in range(i+1, N-1):
S = 0
for k in range(j+1, N):
S = arr[i] + arr[j] + arr[k]
if S == M:
return S
else:
if max_val < S and S <= M:
max_val = S
return max_val
print(blackjack(N, M))
2798번: 블랙잭
첫째 줄에 카드의 개수 N(3 ≤ N ≤ 100)과 M(10 ≤ M ≤ 300,000)이 주어진다. 둘째 줄에는 카드에 쓰여 있는 수가 주어지며, 이 값은 100,000을 넘지 않는 양의 정수이다. 합이 M을 넘지 않는 카드 3장
www.acmicpc.net