728x90
흔히 아는 포커의 블랙잭을 코드로 구현하는 문제입니다.
포커의 블랙잭과 다른 점은 포커는 21로 고정된 반면
이 문제는 직접 대입한 숫자를 넘지 않는 최대 숫자를 찾는 문제입니다.
조합하는 카드의 개수는 3장입니다.
n, m = map(int, input().split())
numList = list(map(int, input().split()))
if len(numList) > n:
numList = numList[:n]
우선 카드의 개수 n과 저희가 접근하고자 하는 최댓값 m을 input으로 받아줍니다.
그다음 줄에는 저희가 사용하고자 하는 카드를 n개만큼 입력받아 numList에 저장합니다.
if문은 만약 실수로 카드를 n개 이상 입력받았을 시
n장 까지만 저장되도록 슬라이싱 해주는 역할을 합니다.
answer = []
for i in range(len(numList)-2):
for j in range(i+1, len(numList)-1):
for k in range(j+1, len(numList)):
a = numList[i]+numList[j]+numList[k]
if a <= m:
answer.append(a)
이제 카드 3장을 조합해야 하는데
for문을 3 중첩을 하여 3가지로 뽑을 수 있는 모든 경우를 탐색해 줍니다.
그중 3장의 카드의 합이 입력했던 m값 보다 작은 경우 answer 리스트에 append 해줍니다.
마지막으로, 답을 내기 위해 answer 리스트 안에서 최댓값을 출력해주면 답이 나옵니다.
print(max(answer)
[전체 코드]
n, m = map(int, input().split())
numList = list(map(int, input().split()))
if len(numList) > n:
numList = numList[:n]
answer = []
for i in range(len(numList)-2):
for j in range(i+1, len(numList)-1):
for k in range(j+1, len(numList)):
a = numList[i]+numList[j]+numList[k]
if a <= m:
answer.append(a)
print(max(answer))
728x90