본문 바로가기

python/백준_프로그래머스

[ 백준 2798번] 블랙잭 python

728x90

https://www.acmicpc.net/problem/2798

 

2798번: 블랙잭

첫째 줄에 카드의 개수 N(3 ≤ N ≤ 100)과 M(10 ≤ M ≤ 300,000)이 주어진다. 둘째 줄에는 카드에 쓰여 있는 수가 주어지며, 이 값은 100,000을 넘지 않는 양의 정수이다. 합이 M을 넘지 않는 카드 3장

www.acmicpc.net

 

 

<조건>
1. n(카드의 개수), m(카드가 도달해야할 수) 입력
2. 카드에 쓰여진 수 입력. 단, 합이 M을 넘지 않는 카드 3장을 찾을 수 있는 경우만
3. 3장의 수를 뽑아 합산한 결과 출력
#입력
n, m=map(int, input().split())            #카드의 개수, 카드가 도달해야 하는 수        
numList=list(map(int, input().split()))   #카드에 적혀있는 수 
result=0

#카드 뽑기
for i in range(0, n):
    for j in range(i+1,n):   #for문 조건 유심히 볼 것!
        for k in range(j+1,n):
            if numList[i]+numList[j]+numList[k] <= m:
                result=max(result, numList[i]+numList[j]+numList[k]) 

#출력
print(result)

 


 

 책의 예제 문제나 연습 문제가 아니여서 문제 이해하는게 어려웠다. 수능 국어 영역 독해가 괜히 있는게 아니다. 

 

문제 풀이 팁?

 사실 다른 건 다 순조로웠는데  단, 합이 M을 넘지 않는 카드 3장을 찾을 수 있는 경우만 이라는 조건을 구현하는 부분이 이해하기 어려웠다. 

 

 근데 말 그래로다.. 그냥 입력한 숫자 카드의 모든 경우의 수를 조건문 검사하면 되는 것...

 


 

 매일 문제 은행 식의 문제만 풀어서인지 굉장히 간단한 문제였는데 푸는데 많이 헤맸다.(민망)