상세 컨텐츠

본문 제목

백준[2798번]:: 블랙잭(Python,파이썬)

Dong_Eun2(이동은)/알고리즘(백준)

by Dong_Eun2 2020. 10. 4. 15:43

본문

www.acmicpc.net/problem/2798

 

2798번: 블랙잭

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

www.acmicpc.net

 

 

 

나의 코드:

 

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 함수를 사용하여 답을 출력하였다.

 

 

 

관련글 더보기

댓글 영역