2798번 블랙잭
https://www.acmicpc.net/problem/2798
문제 설명
예제
# 입력
5 215 6 7 8 9
# 출력
21
# 입력
10 50093 181 245 214 315 36 185 138 216 295
# 출력
497
문제 분석
N장의 카드 중 3장을 뽑아 합이 M을 넘지 않으며 가장 가까운 수가 되도록 해야한다. -> 모든 방식을 탐색하는 브루트포스
1) n : 카드 개수 , m : 카드합의 최댓값을 입력받는다. int로 맵핑해준다.
합들을 저장해줄 empty list = lst 를 생성한다.
2) for문을 3번 중첩 사용하여 hap(합)을 구한 후 m보다 작거나 같다면, lst(리스트)에 저장해준다.
(문제의 조건중 하나가 m 넘으면 안 되므로)
i는 0부터, j는 i+1부터, k는 j+1 부터 시작하므로 겹칠 가능성을 제외하였다.
3) n까지의 반복문이 종료되면 생성해둔 lst에서 max() 함수를 이용하여 최댓값을 출력해준다.
n ,m = map(int, input().split())
arr = list(map(int, input().split()))
lst = []
for i in range(n):
for j in range(i+1, n):
for k in range(j+1, n):
hap = arr[i] + arr[j] + arr[k]
if hap > m:
continue
else:
lst.append(hap)
print(max(lst))
'SWLUG > 파이썬 (코딩테스트)' 카테고리의 다른 글
[파이썬/백준] 1932번 정수 삼각형 (0) | 2024.09.16 |
---|---|
[파이썬/백준] 2231번 분해합 (0) | 2024.05.07 |
[파이썬/백준] 1 2 3 더하기 & 부녀회장이 될테야 (0) | 2024.04.28 |
[파이썬/백준] 내리막길, 양팔저울 (1) | 2024.04.27 |
[파이썬/프로그래머스] n의 배수, 공배수 (0) | 2024.04.27 |