코딩테스트/백준

[백준][Python] 2798번. 블랙잭

내만 2022. 7. 14. 20:16
728x90
반응형

 

 

 

 

 

🙆‍♂️문제


 

🙋‍♂️풀이


문제요약 : N장의 숫자 카드 중 M을 넘지 않으면서 M에 최대한 가까운 카드 3장의 합을 출력!

 

입력 값으로는 카드의 개수 N과 제한 값 M이 첫줄에 주어지고

둘째 줄에는 N개의 카드 숫자들이 주어진다.

 

🚀입력받기


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

n에는 카드 수 m에는 제한 값 그리고 card 배열안에 카드 숫자들을 입력받았습니다.

 

 

🚀 제한 값을 넘지않는 값 배열에 넣기


win = []
for i in range(len(card)-2):
    for j in range(i+1,len(card)-1):
        for k in range(J+1,len(card)):
            add = card[i]+card[j]+card[k]
            if add <= m:
                win.append(add)

for문을 총 3번 사용했습니다.

 

카드의 갯수가 5개라고 가정했을 때 총 나올 수 있는 덧셈 경우의 수입니다.

1번째 숫자가 i값 2번째 숫자가 j, 3번째 숫자가 k입니다. 규칙을 찾아서 규칙을 적용하면 for문을 작성할 수 있습니다.

(규칙은 알아서 찾아보는걸로)

그렇게 해서 더한 값이 m값보다 작거나 같으면 win이라는 배열에 넣어서 나올 수 있는 값을 구합니다.

 

🚀 출력하기


print(max(win))

max함수를 이용해서 배열에 저장된 최대값을 출력합니다. 파이썬이라 편합니다..

728x90
반응형