728x90
반응형
문제
https://www.acmicpc.net/problem/2798
해설
반응형
n장의 카드 중 3장을 더해 m을 넘지 않으면서 가장 가까운 수를 구하는 문제기 때문에
3중 반복문을 돌면서 한장씩 더하면 된다.
여기서 조심해야 할 것은 j는 i+1부터 돌아야 하고, k는 j+1부터 돌아야 한다는 것이다.
그렇지 않으면 똑같은 카드를 더하게 된다.
3장을 더한 값이 m보다 작거나 같으면 배열에 넣고
m을 넘지 않으면서 가장 가까운 수는 이 배열 안에서 가장 큰 수여야 하기 때문에
배열의 max값을 찾아주면 된다.
코드
-파이썬
#백준 2798(블랙잭)
n, m = map(int, input().split()) #카드 개수, 딜러가 외치는 숫자
num = [*map(int, input().split())] #카드에 적힌 수
arr = []
for i in range(n):
for j in range(i+1, n):
for k in range(j+1, n):
sum = num[i] + num[j] + num[k]
if sum <= m:
arr.append(sum)
print(max(arr))
728x90
반응형
'알고리즘 > 백준' 카테고리의 다른 글
[파이썬] BOJ_2605(줄 세우기) (0) | 2023.06.11 |
---|---|
[파이썬] BOJ_2810(컵홀더) (0) | 2023.06.09 |
[파이썬] BOJ_2644(촌수계산) (0) | 2023.05.30 |
[파이썬] BOJ_2309(일곱 난쟁이) (0) | 2023.05.27 |
[파이썬] BOJ_2231(분해합) (0) | 2023.05.23 |