백준 2798번 : 블랙잭(python)
입력
첫째 줄에 카드의 개수 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(콤비네이션)을 이용했다.
Author And Source
이 문제에 관하여(백준 2798번 : 블랙잭(python)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@gogod/백준-2798번-블랙잭python저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)