[백준] 블랙잭

백준 - 블랙잭

N장의 카드에 써져 있는 숫자가 주어졌을 때, M을 넘지 않으면서 M에 최대한 가까운 카드 3장의 합을 구해 출력하는 문제이다. 예를 들어서 N이 5이고, M이 21로 주어지고, 카드 5장이 다음과 같을 때 6,7,8의 합인 21이 최대값이다.

입력

5 21		# N=5 M=21
5 6 7 8 9	#카드 5장에 쓰여진 수

출력

21


나동빈 강사님 풀이

조합의 경우의 수는 n(n-1)(n-2) / 3!이다. 따라서 3중 for문을 돌려서 모든 경우의 수를 생각해서 해결할 수 있다.

n, m = list(map(int, input().split(' ')))
data = list(map(int, input().split(' ')))

result = 0
length = len(data)

count = 0
for i in range(0, length):
    for j in range(i+1, length):
        for k in range(j+1, length):
            sum_value = data[i] + data[j] +data[k]
            if sum_value <= m:
                result = max(result, sum_value)
print(result)


max

매개변수로 들어온 반복이 가능한 인자들 중에 가장 큰 데이터를 반환한다.

result = max(result, sum_value)


References

파이썬 max, min 함수에 대해서

태그:

카테고리:

댓글남기기