백준 2798번 : 블랙잭(python)

5674 단어 백준파이썬백준

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

출력
첫째 줄에 M을 넘지 않으면서 M에 최대한 가까운 카드 3장의 합을 출력한다.

코드

N,M = map(int,input().split())
a=[int(x) for x in input().split()]
if len(a)>N:
    print('error')
    exit()
a.sort()
Nc =int(N*(N-1)*(N-2)/6)
c = 0
t = 0
ct = 0
while(Nc > c):
    for i in range(0,N-2,1):
        for j in range(i+1,N-1):
            for k in range(j+1,N):
                ct = a[i]+a[j]+a[k]
                if(ct > M):
                    break
                if(ct > t):
                    t = ct
                c += 1
print(t)

입력받은 모든 수를 a에 저장해주고 모든 조합의 합을 계산했다.
t와 ct 두 개의 변수에 숫자를 저장했다. 일단 숫자의 합을 ct에 저장하고 ct가 t보다 클 경우에만 다시 t에 ct를 저장했다. 총 횟수는 M C 3(콤비네이션)을 이용했다.

좋은 웹페이지 즐겨찾기