본문 바로가기

알고리즘/백준

[Python] 백준 파이썬 2798 블랙잭

https://www.acmicpc.net/problem/2798

 

2798번: 블랙잭

첫째 줄에 카드의 개수 N(3 ≤ N ≤ 100)과 M(10 ≤ M ≤ 300,000)이 주어진다. 둘째 줄에는 카드에 쓰여 있는 수가 주어지며, 이 값은 100,000을 넘지 않는 양의 정수이다. 합이 M을 넘지 않는 카드 3장

www.acmicpc.net

# 백준 2798 블랙잭
n, m = map(int,input().split())
card = list(map(int, input().split()))
sum_list = []
for i in range(n-2):
  for j in range(i+1, n-1):
    for k in range(j+1, n):
      sum = card[i] + card[j] + card[k]
      if sum == m :
        sum_list.append(sum)       
      elif sum < m :
        sum_list.append(sum)
      else:
        pass

print(max(sum_list))

1. 뽑은 세 개의 카드를 합한 값이 들어갈 sum_list를 만들어 줍니다.

2. 3중 for 문으로 카드 세 개를 뽑아주면서 확인해줍니다.

3. 세 카드 합이 m보다 작거나 같은 경우만 리스트에 추가해줍니다. m보다 큰 수는 필요가 없습니다.

4. 리스트에서 최댓값을 출력해줍니다.