a,b = map(int,input().split())
m = list(map(int,input().split()))
num_list = []
sum = 0
n = len(m)
for i in range(n-2):
for j in range(i+1,n-1):
for l in range(j+1,n):
sum = m[i] + m[j] + m[l]
if (sum <= b):
num_list.append(sum)
print(max(num_list))
이 문제는 모든 카드 경우의 수를 합으로 구하고, 그중에서 M보다 작거나 같을 수를 고르면 정답이다.
나는 그래서 순차 탐색으로 카드 하나를 고르고 나머지를 합을 구하는 방식을 사용하기로 했다.
위 문제는 카드 3장의 합을 구하는 것 때문에 For문을 3개로 돌려서 모든 합을 구했다. 그리고 만약 범위보다 작거나 같은 수 들만 Num_list에 저장하여 이중에서 가장 큰 숫자를 골라내는 max 함수를 사용하여 답을 출력하였다.
백준[7568번]:: 덩치(Python,파이썬) (0) | 2020.10.07 |
---|---|
백준[2231번]:: 분해합(Python,파이썬) (0) | 2020.10.06 |
백준[10872번]:: 팩토리얼(Python,파이썬) (1) | 2020.09.24 |
백준[1316번]:: 그룹 단어 체커(Python,파이썬) (1) | 2020.09.24 |
백준[2941번]:: 크로아티아(Python,파이썬) (2) | 2020.09.22 |
댓글 영역