알고리즘/백준

[파이썬] BOJ_2798(블랙잭)

딱따구르리 2023. 6. 1. 20:29
728x90
반응형

 

 

문제

 

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

 

2798번: 블랙잭

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

www.acmicpc.net


 

해설

 

반응형

 

 

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