[코뮤니티_코딩챌린지] 파이썬 03 블랙잭

less than 1 minute read

코뮤니티 코딩챌린지 03일차

코뮤니티 코딩챌린지 03일차

문제

카지노에서 자주 플레이되는 블랙잭의 규칙은 카드의 합이 21이 넘지 않는 한도 내에서, 카드의 합을 가장 크게 만드는 게임이다.

이와 유사하게, 코드메이트 버전의 블랙잭은 N개의 카드중 세장의 카드를 뽑아 X를 넘지 않으면서 X와 가장 가까운 수의 카드조합을 골라내는 규칙으로 진행된다.

​ 첫째 줄에는 카드의 개수 N과 목표 값 X가 주어지며,
두번째 줄에는 카드에 쓰여있는 수가 입력으로 주어질 때,
X에 가장 가까우면서 X를 넘지 않는 카드 세장의 합을 구해서 출력하세요.

입/출력 예시

👉 입력 예시
5 21
1 2 3 4 5

👉 출력 예시
12

👉 입력 예시
8 100
16 85 30 14 95 63 52 87

👉 출력 예시
98

문제풀이

n,x = map(int, input("카드의 개수(N) / 목표 값(X) 입력 : ").split(" "))
inputNumbers = list(map(int, input("카드의 쓰여있는 수 입력 : ").split(" ")))

#정렬(역순)
inputNumbers.sort(reverse=True)
listSum = []

#카드 세장을 뽑기
for i in range(len(inputNumbers)-3) :
    sumN = sum(inputNumbers[i:i+3]) #3개의 숫자 더하기
    if sumN <= x : #x보다 작은 수 리스트에 올리기
        listSum.append(sumN)

#숫자의 합 중 가장 큰 수
print(max(listSum))

카드의 개수(N) / 목표 값(X) 입력 : 4 21
카드의 쓰여있는 수 입력 : 1 2 3 4 5
12