- 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))
'알고리즘 문제 풀기 > 백준(Baekjoon)' 카테고리의 다른 글
[백준 알고리즘] 2846. 오르막길 _ 파이썬 (0) | 2021.02.21 |
---|---|
[백준 알고리즘] 1713번 후보 추천하기 - 파이썬 (2) | 2021.02.20 |
[백준 알고리즘] 1259. 펠린드롬 수_ 파이썬 (0) | 2021.02.19 |
[백준 알고리즘] 8979. 올림픽 _ 파이썬 (0) | 2021.02.15 |
[백준 알고리즘] 2847. 게임을 만든 동준이 _ 파이썬 (1) | 2021.02.13 |